2014-04-25 6 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.

Append вызывает различные вещи и в какой-то момент вызывает buildFragment, чтобы включить аргумент, предоставленный в добавляемый фрагмент HTML.

В этой функции заключается в следующем:

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

элем в этом случае будет false и поэтому он перепрыгивает через него.

Я предположил, что эта строка определена, чтобы поймать «неопределенные» вещи, которые передаются, и просто происходит, чтобы поймать ложь. Более того, я не могу сказать, почему код подобен этому, но его эта строка кода, которая это делает.

Ссылка: http://code.jquery.com/jquery-2.1.0.js

+1

Я обновил скрипт, чтобы продемонстрировать, что это «ошибка» метода jquery append. – andi

Смежные вопросы