在JS中,“无法读取未定义的属性X”和“无法获取未定义的属性X”之间有什么区别?“无法读取属性”并且无法获取属性之间的区别?
我在Azure中部署的应用程序中收到了这两个不同的错误消息,并且只注意到消息中的差异。为什么会有两个不同的错误消息可能出现相同的错误?错误的起源不一样吗?它与不同的库,JS版本或操作系统有关吗?
在JS中,“无法读取未定义的属性X”和“无法获取未定义的属性X”之间有什么区别?“无法读取属性”并且无法获取属性之间的区别?
我在Azure中部署的应用程序中收到了这两个不同的错误消息,并且只注意到消息中的差异。为什么会有两个不同的错误消息可能出现相同的错误?错误的起源不一样吗?它与不同的库,JS版本或操作系统有关吗?
他们的意思是一样的,它只是不同的措辞。这意味着你做一样的东西:
console.log(a.X);
...其中a
的值为undefined
:
var a = undefined;
try {
console.log(a.X);
} catch (e) {
console.error(e.message);
}
首先是从谷歌的JS引擎所使用的措辞,V8,用于Chrome,Chromium和NodeJS等:
https://github.com/v8/v8/blob/6eba6b4b89db81bc359dc041c62d1277f24bb8d4/src/messages.h#L334
第二个来自微软的引擎Chakra,它被IE和Edge使用。
我的错误,我相信我*有*见过它,我从来没有注意到它。 :-) –
什么是生成这些错误的代码? – Antony
第一个是使用V8 JavaScript引擎(用于Chrome,Chromium和NodeJS;不同的引擎有不同的措辞)的措辞的相当标准的错误消息。我从来没有见过第二个。 –
Chakra使用第二个。 https://github.com/Microsoft/ChakraCore/search?utf8=%E2%9C%93&q=%22unable+to+get+property%22&type=Code –