我无法在jsfiddle.net中从github加载mustache.js,所以我下载了文件并尝试在本地机器上运行:
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);
令我惊讶的是,即使是official docs says the {{.}}
is for string
,虚假值也会呈现为[object Object]
。数字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"]
,那么所有字符串都会很好,但第3个字符串也会显示为[object Object]
。
如果它适用于"ha"
,为什么它不适用于""
?如果它适用于3.12
,为什么它不适用于0
?如果它能够适用于所有原始值,那么它是否有意义?
(我还尝试使用Handlebars,所有值都显示出来,null
,undefined
和false
除外