为什么&引用;。abcd返回未定义的值,而不是在Javascript中抛出未定义的错误(但Typescript抛出警告)

为什么&引用;。abcd返回未定义的值,而不是在Javascript中抛出未定义的错误(但Typescript抛出警告),javascript,typescript,Javascript,Typescript,请检查下面的3个片段,让我知道它是如何工作的 片段1 运行下面的代码段时,我可以看到此错误uncaughtreferenceerror:aaa未定义“,。我知道,因为我们没有定义aaa变量 var a=aaa;athing.something表示“从athing获取名为something的属性” 如果属性不存在,则其值为未定义 新创建的字符串没有abdc属性 您无法将其与代码段1进行比较,因为您处理的是属性,而不是变量 您可以将其与Snippet 2进行比较,Snippet 2抱怨它不是一个

请检查下面的3个片段,让我知道它是如何工作的

片段1 运行下面的代码段时,我可以看到此错误
uncaughtreferenceerror:aaa未定义“,
。我知道,因为我们没有定义
aaa
变量


var a=aaa;
athing.something
表示“从
athing
获取名为
something
的属性”

如果属性不存在,则其值为
未定义

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


您无法将其与代码段1进行比较,因为您处理的是属性,而不是变量


您可以将其与Snippet 2进行比较,Snippet 2抱怨它不是一个函数-
未定义
实际上不是一个函数。

因为
是一个字符串,javascript提供了一些默认属性,如
”“.length
。因为没有默认值
.abo
它只是说它是未定义的

实际上它相当于:

var a = " ";
a.abcd;
它基本上检查字符串构造函数原型中的abcd属性。代码段出现错误,因为您正在调用:

undefined()

因为这正是语言设计的工作方式。访问未定义的属性返回
未定义的
。注意强制:我怀疑这收到了反对票,因为你应该RTFM。它意味着“阅读友好手册”