引发错误的JavaScript属性访问

引发错误的JavaScript属性访问,javascript,properties,runtime-error,Javascript,Properties,Runtime Error,在哪些特定情况下,属性访问会在JavaScript中引发错误 在Node.js中,这将打印未定义的: x = 3 console.log( x.thing ); 这会引发一个错误: x = null; console.log( x.thing ); 这里的语义到底是什么?对于几乎所有的值甚至函数,属性访问都是正常的行为,但在undefined和null上会抛出错误 我一辈子都找不到证实这些是唯一的案例。有人能确认吗?未定义的和空的都不是对对象的引用,也不是可以隐式装入对象包装中的原始值。因此

在哪些特定情况下,属性访问会在JavaScript中引发错误

在Node.js中,这将打印
未定义的

x = 3
console.log( x.thing );
这会引发一个错误:

x = null;
console.log( x.thing );
这里的语义到底是什么?对于几乎所有的值甚至函数,属性访问都是正常的行为,但在
undefined
null
上会抛出错误


我一辈子都找不到证实这些是唯一的案例。有人能确认吗?

未定义的
空的
都不是对对象的引用,也不是可以隐式装入对象包装中的原始值。因此,任何引用属性的尝试都将失败

当您使用一个数字(
3
)时,运行时会将该数字框作为数字实例,但当然没有“thing”属性,因此该值是
未定义的


此外,函数是一级对象,因此对函数属性的引用在任何意义上都不是真正的“怪异”。

您期望
null的确切含义是什么?
的意思是什么?很简单,当您尝试查找数字的属性时,它会检查数字原型。如果你做了
x.toString
,你会发现它是一个函数。然而,
null
显然是缺少标识,表明变量指向no object。我完全明白这一点,我只是不知道其他错误情况。还有其他吗?
属性访问是几乎所有值(甚至函数)的正常行为,不,这是错误的,在对象中,您只能访问现有属性。例如,在字符串
str
中,您只能访问现有属性,例如
str.length
。。。以及未定义的属性。