2015-11-22 139 views
-1

我在我的Chrome檢查員旁邊玩耍時發現執行以下語句+() => {}返回NaN。對我來說,這看起來應該不是有效的JavaScript,所以我的問題是:爲什麼這個聲明導致它被視爲一個數字?爲什麼+()=> {}評估爲NaN?

+1

你見過http://www.jsfuck.com :-) – cYrixmorten

+0

@晶體管09很奇怪,我還沒有在 – Paradoxis

回答

3

讓我們來分解它。

ECMAScript6引入了一個新的符號Arrow function,所以() => {}僅僅[1]function() {}。這返回一個函數對象。

如果在表達式中有+之前沒有任何內容,它會嘗試將其後的任何內容轉換爲數字。當您嘗試將function轉換爲數字時,您會收到NaN


P.S. [1]爲了這個例子,它沒有什麼區別,但箭頭符號實際上更像(function() {}).bind(this)

5

實際上,你解析了一個arrow功能了一些,當你執行像

操作,這些操作將被轉換爲NaN

(x) => { x * x} 

一個快捷方式

function sqr (x) { 
    return x * x; 
} 

>> + "123"

>> 123

>> + function f() {}

>> NaN

與之相似,由於箭頭的功能是像任何其他功能,鑄造號碼會產生NaN

>> +() => {}

>> NaN

+0

之前看過那個符號哦,哇,其實很合乎邏輯,就這樣解釋 – Paradoxis

+2

這是不正確的。箭頭功能沒有執行,它正被鑄造成一個數字。 – transistor09

+0

謝謝.. @Paradoxis –

相關問題