请在下面查看3个片段并告诉我它是如何工作的
运行以下代码段时,我可以看到此错误Uncaught ReferenceError: aaa is not defined",
。我知道因为我们没有定义aaa
变量。
var a=aaa;

此外,我在下面的代码段中收到\"string\".abcd is not a function"
错误。
var a="string".abcd();

但为什么下面的代码段不会引发错误
Uncaught ReferenceError: abcd is not defined",
?为什么"string".abcd
返回undefined?
var a=" ".abcd;
console.log(a)

答案 0 :(得分:5)
athing.something
表示“从something
获取名为athing
的媒体资源。”
如果某个属性不存在,则其值为undefined
。
您新创建的字符串没有abdc
属性。
您无法将其与Snippet 1进行比较,因为您正在处理属性,而不是变量。
你可以将它与Snippet 2进行比较,Snippet 2抱怨它不是一个函数 - undefined
确实不是一个函数。
答案 1 :(得分:2)
因为" "
是一个字符串,而javascript提供了一些默认属性,例如" ".length
。因为没有默认的.abcd
它只是说它是未定义的
答案 2 :(得分:1)
实际上它相当于:
var a = " ";
a.abcd;
它基本上检查String构造函数原型中的abcd属性。 Snippet因为您正在调用而出错:
undefined()