2017-01-25 173 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

我的錯誤,我相信我*有*見過它,我從來沒有注意到它。 :-) –