2014-04-25 279 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