2014-04-25 275 views
2

我下面從CoffeeScript的cookbook爲什麼'假'不打印?

和我玩了一下這個例子中,例如: http://jsfiddle.net/andilab/N8DP3/2/

normal_false = 1<2<2 #false -> is NOT printed 

normal_true = 1<2<3 #true -> is printed 

知道爲什麼false不打印,直到與JSON.stringify使用,它是物質的coffescript或JSFiddle或jQuery?

+1

一些語言將打印布爾'FALSE'爲空,我想JavaScript是其中之一。 – Havenard

+0

也只是追加另一個字符串似乎強迫它成爲一個完整的字符串,例如'out.append'|'+ normal_false +'|''。它可能是append有某種重載類型的東西,如果它傳遞了一個布爾值,會導致true和false沿着不同的行傳遞,它將會做一些特殊的事情。對於其標準的'out.append false'值得一看,它可以簡化掉範圍比較的東西。 – Chris

+1

進一步玩這個實際上是相關的jQuery的附加功能,甚至不coffeescript ... – Chris

回答

1

這是由於使用jQuery的append函數造成的。

追加調用各種東西,並在某些時候調用buildFragment將提供的參數轉換爲要添加的HTML片段。

在這個函數如下:

if (elem || elem === 0) { 
    ... //Most of the code that generates stuff 
} 

ELEM在這種情況下會false,所以它跳過它。

我認爲這條線被定義爲捕捉「未定義」的東西被傳入,而且恰巧也是錯誤的。除此之外,我不能說爲什麼代碼是這樣的,但它的代碼行就是這樣。

參考:http://code.jquery.com/jquery-2.1.0.js

+1

我更新了小提琴以demnostrate,這是jquery append方法的錯誤。 – andi