Эта строка действительно помогла мне: «Всякий раз, когда какое-либо свойство не определено, т.е. отсутствует в объекте, и вы попытаетесь получить к нему доступ, вы получите неопределенное»
аюсь понять разницу между точечной и квадратной скобками. Проходя различные примеры здесь на SO и на некоторых других сайтах, я натолкнулся на эти два простых примера:
var obj = { "abc" : "hello" };
var x = "abc";
var y = obj[x];
console.log(y); //output - hello
var user = {
name: "John Doe",
age: 30
};
var key = prompt("Enter the property to modify","name or age");
var value = prompt("Enter new value for " + key);
user[key] = value;
alert("New " + key + ": " + user[key]);
Первый пример возвращает у неопределенным, если в третьей строке я заменяюobj[x]
сobj.x
, Почему бы и нет"hello"
Но во втором примере выражениеuser[key]
можно просто заменить наuser.key
без какого-либо аномального поведения (по крайней мере для меня). Теперь это смущает меня, так как я недавно узнал, что если мы хотим получить доступ к свойствам по имени, хранящемуся в переменной, мы используем обозначение квадратной скобкой [].