让我们说,
var obj = {
name: "AKS"
};
console.log(obj.name);
console.log(obj.lname);

输出:
AKS undefined
如果我们这样做,还有其他地方:
var func = function() {
var name = "AKS";
};
console.log(name);

输出:
error: name is not defined
两者之间的基本区别是什么? 提前谢谢。
答案 0 :(得分:1)
这就是定义行为的方式。如果访问对象上的未定义属性,则返回值undefined
。但是如果你试图使用一个不存在的本地定义的符号名称(a.k.a。变量),即从未定义过,那就是错误。
为什么语言设计师决定最好通过尝试访问该属性来测试是否存在属性,这是任何人的猜测。但是,抛出错误的不存在的变量是跨语言的非常标准的行为。
请注意,未定义的属性行为不适用于所有类型。最值得注意的是,您无法访问undefined
上的属性,它会产生错误。因此foo.bar.baz
bar
为undefined
会产生错误。
答案 1 :(得分:-1)