2017-01-25 115 views
0

在JS中,“无法读取未定义的属性X”和“无法获取未定义的属性X”之间有什么区别?“无法读取属性”并且无法获取属性之间的区别?

我在Azure中部署的应用程序中收到了这两个不同的错误消息,并且只注意到消息中的差异。为什么会有两个不同的错误消息可能出现相同的错误?错误的起源不一样吗?它与不同的库,JS版本或操作系统有关吗?

+2

什么是生成这些错误的代码? – Antony

+1

第一个是使用V8 JavaScript引擎(用于Chrome,Chromium和NodeJS;不同的引擎有不同的措辞)的措辞的相当标准的错误消息。我从来没有见过第二个。 –

+0

Chakra使用第二个。 https://github.com/Microsoft/ChakraCore/search?utf8=%E2%9C%93&q=%22unable+to+get+property%22&type=Code –

回答

1

他们的意思是一样的,它只是不同的措辞。这意味着你做一样的东西:

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使用。

https://github.com/Microsoft/ChakraCore/blob/58a7226c8eeb3993be19911d2711c147570eb3c2/lib/Parser/rterrors.h#L162

+0

我的错误,我相信我*有*见过它,我从来没有注意到它。 :-) –