2014-01-12 31 views
0

我看到有一天這個謎團:(c === c)是否有錯?

具有以下JavaScript代碼:

var c; 

// YOU CAN NOT CHANGE THE FOLLOWING CODE 
if (c===c) { 
    alert ("YOU LOSE!"); 
} 
else { 
    alert ("YOU WIN!"); 
} 

只改變C值(前if語句),你必須使代碼顯示了「YOU WIN !「 信息。

這真的有可能嗎?

回答

3

是的,這是可能的。

var c = NaN; 
4

NaN不等於自己。

console.log(NaN === NaN); 

輸出

false 

NaN's MDN docs

平等運算符(==和===)報價不能被用來對 NaN的測試一個值。改用Number.isNaN()或isNaN()。

NaN === NaN;  // false 
Number.NaN === NaN; // false 
isNaN(NaN);   // true 
isNaN(Number.NaN); // true