Почему ложные значения и пустые строки в массиве отображаются как [объект объекта] в усах?
Я не могу сделать 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
)