Почему ложные значения и пустые строки в массиве отображаются как [объект объекта] в усах?

Я не могу сделать mustache.js для загрузки из github в jsfiddle.net, поэтому я скачал файл и попробовал на локальной машине:

var output = Mustache.render(

    "{{#arr}} {{.}} \n{{/arr}}", 

    {
        arr : [1, 3.12, NaN, Infinity, -Infinity, 0, -0, null, "", " ", "0", 
               true, false, undefined, "hee"]
    }

);

console.log(output);

к моему удивлению, ложные значения отображаются как [object Object]хотя официальные документы говорят, что {{.}} для string, Числа 1 и 3.12 на самом деле вышли хорошо. Обратите внимание, что они представляют собой примитивный тип числа, а не строки. В console.log показано:

 1 
 3.12 
 [object Object] 
 Infinity 
 -Infinity 
 [object Object] 
 [object Object] 
 [object Object] 
 [object Object] 

 0 
 true 
 [object Object] 
 [object Object] 
 hee 

Интересно, почему ложные значения включают допустимую строку "" показаны как [object Object]?

Если я сделаю это arr : ["ha", "hee", "", "wah"], тогда все строки вышли хорошо, но третий также вышел как [object Object],

Если это работает для "ha" почему это не работает для ""? Если это работает для 3.12 почему это не работает для 0? Может быть, это имеет смысл, если оно работает для всех примитивных ценностей?

(Я также попробовал снова, используя Handlebars, и все значения, кроме null, undefined, а также false)

0 ответов

Другие вопросы по тегам