在JavaScript中:
falsy: false, null, undefined, 0, -0, NaN, ""
truthy: everything else, including [] and {} (empty array and empty object)
Run Code Online (Sandbox Code Playgroud)
但在Handlebars中,似乎是(来自Handlebars的文档){{#if foo}}:
falsy: false, undefined, null, "", []
truthy: everything else, including 0, -0, {}
Run Code Online (Sandbox Code Playgroud)
undefined并且NaN不能作为JSON文件中的值列出,因此我无法使用Java Moustache渲染器对其进行测试,但是,如果我根本没有定义属性,那么它可能只是undefined因为它被视为假的.
上面的内容是为了{{#if foo}}让事情变得更复杂,只是{{#foo}}在Handlebars和Mustache中呢?truthy和falsy规则是否完全一样{{#if foo}}?如果可能,请提供指向文档的指示以支持您的声明.希望用PHP或Java或其他语言实现Mustache或Handlebars遵循完全相同的规则.
我还发现,对于Mustache,它似乎{{#foo}}被称为一个部分,其规则是:
falsy: whatever falsy in JavaScript, plus []
truthy: everything else
Run Code Online (Sandbox Code Playgroud)
但似乎can.js的Mustache/Handlebars的实现0视为虚假.(参见http://jsfiddle.net/kAt7E/45/ vs http://jsfiddle.net/kAt7E/46/或http://jsfiddle.net/kAt7E/47/ vs …