为什么"".abcd返回未定义的值而不是在Javascript中抛出未定义的错误(但是Typescript会发出警告)

Ram*_*ran -6 javascript typescript

请在下面查看3个片段,并告诉我它是如何工作的

片段1

Uncaught ReferenceError: aaa is not defined",运行以下代码段时,我可以看到此错误.我知道因为我们没有定义aaa变量.

片段2

而且我在\"string\".abcd is not a function"下面的代码片段中收到错误.

代码段3

但是为什么下面的代码片段不会产生类似的错误Uncaught ReferenceError: abcd is not defined",?为什么"string".abcd返回undefined?

var a=" ".abcd;
console.log(a)
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 5

athing.something意思是"获取something从中调用的属性athing".

如果属性不存在,则它具有值undefined.

您新创建的字符串没有abdc属性.


您无法将其与Snippet 1进行比较,因为您正在处理属性,而不是变量.

你可以将它与Snippet 2进行比较,Snippet 2抱怨它不是一个函数 - undefined实际上它不是一个函数.