我在我的Chrome檢查員旁邊玩耍時發現執行以下語句+() => {}
返回NaN
。對我來說,這看起來應該不是有效的JavaScript,所以我的問題是:爲什麼這個聲明導致它被視爲一個數字?爲什麼+()=> {}評估爲NaN?
回答
讓我們來分解它。
ECMAScript6引入了一個新的符號Arrow function,所以() => {}
僅僅[1]function() {}
。這返回一個函數對象。
如果在表達式中有+
之前沒有任何內容,它會嘗試將其後的任何內容轉換爲數字。當您嘗試將function
轉換爲數字時,您會收到NaN
。
P.S. [1]爲了這個例子,它沒有什麼區別,但箭頭符號實際上更像(function() {}).bind(this)
。
實際上,你解析了一個arrow
功能了一些,當你執行像
操作,這些操作將被轉換爲
NaN
這(x) => { x * x}
一個快捷方式
function sqr (x) { return x * x; }
>> + "123"
>> 123
>> + function f() {}
>> NaN
與之相似,由於箭頭的功能是像任何其他功能,鑄造號碼會產生
NaN
>> +() => {}
>> NaN
之前看過那個符號哦,哇,其實很合乎邏輯,就這樣解釋 – Paradoxis
這是不正確的。箭頭功能沒有執行,它正被鑄造成一個數字。 – transistor09
謝謝.. @Paradoxis –
- 1. 爲什麼string> int評估爲True?
- 2. 爲什麼10 >> 2 + 5 >> 2評估爲零?
- 3. 爲什麼_ = $ = + [],++ _ +''+ $評估爲10
- 4. 爲什麼「$ this - > _ query-> execute()」總是評估爲false?
- 5. 爲什麼-4 <= -4評估爲真,爲什麼9> = 9在Ruby中評估爲真?
- 6. 爲什麼Mahout RMSRecommenderEvaluator評估方法有時會導致NaN?
- 7. 用NaN評估
- 8. 爲什麼`as.logical(2)`評估爲`TRUE`?
- 9. 爲什麼如果(無)評估爲真?
- 10. 爲什麼「」<{}評估爲真?
- 11. 爲什麼strtof總是評估爲HUGE_VAL?
- 12. 爲什麼Ruby包含?評估爲零?
- 13. 爲什麼a =評估爲零?
- 14. 爲什麼在VB.Net中評估爲false?
- 15. 爲什麼list.append評估爲false?
- 16. 爲什麼評估「(Double.MinValue + 1)> Double.MinValue」爲false?
- 17. 爲什麼`to_unsigned(0,4)> = -1`在運行時評估爲`FALSE`?
- 18. 當和爲什麼數字評估爲NaN,乘法後,在Javascript中?
- 19. 爲什麼_ret評估爲真,不應評估爲假(位操作員)?
- 20. 爲什麼輸出(Nan,Nan)?
- 21. JavaScript:爲什麼NaN!== NaN?
- 22. 爲什麼評估,以2個
- 23. 爲什麼$([System.Text.RegularExpressions.Regex] :: IsMatch())評估一次ItemGroupDefinition?
- 24. 爲什麼這總是評估錯誤?
- 25. 爲什麼ng-animate未被評估?
- 26. 爲什麼在量角器中評估()?
- 27. 爲什麼在Scheme中不評估?
- 28. 爲什麼pylint會評估自己?
- 29. 爲什麼不重新評估條件?
- 30. 爲什麼PyRun_String不評估bool文字?
你見過http://www.jsfuck.com :-) – cYrixmorten
@晶體管09很奇怪,我還沒有在 – Paradoxis