使用 "var" 而不是使用 Object.assign() "let"时未定义


var name = {
  nameValue: 'John'
};
console.log(name.nameValue);  // undefined
var surname = {
  surnameValue: 'Doe'
};
Object.assign(name, surname);
console.log(name.surnameValue); // undefined
使用

var 时我变得未定义,但使用 let 和我在 jsbin.com

因为窗口中存在"name",所以你可以使用变量的其他名称

var name0 = {
  nameValue: 'John'
};
console.log(name0.nameValue);

(Window.(name 是全局 window 对象的特定值,可用于(但非常罕见(设置表单和超链接目标。

name属性不是只读的,而是仅限于基元类型 string 。因此,分配给window.name的任何值都将变为字符串。

这基本上就是为什么您在name.nameValue使用时会undefined的原因。 name不是对象。

var name = { hello: "world!" };
console.log(name + ' - ' + name.hello); // "[object Object] - undefined"
var name = "Hello World!"
console.log(name); // "Hello World!";

您正在window对象的全局范围内设置变量name。在窗口对象中设置 name 的值时,其get方法将调用 toString 方法。

如此处所述

var name = {first:"Vignesh"};
console.log(name); //(1)
console.log(name.first); //(2)

(1( 将值[object Object]作为字符串而不是 {first: "Vignesh"} 给出。

(2( 描述您正在访问字符串的未赋值属性,即[object Object].first变为undefined

您必须在其他作用域(如 if...else block (中声明 name 对象,function block以实现所需的内容。

最新更新