6

我无法让mustache.js从jsfiddle.net中的github加载,所以我下载了文件并在本地机器上尝试:

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],即使官方文档说{{.}}是 forstring。数字 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,所有值都显示了,除了nullundefinedfalse

4

0 回答 0