{?}和之间究竟有什么区别{#}?
-
经过一点点测试后,列出所有truthy/falsy值{?},并将它们与以下内容进行比较{#}:
背景:
{
values: [
// false
'',
"",
false,
null,
undefined,
[],
// true
0,
"0",
"null",
"undefined",
"false",
{},
{a: 'a'}
]
}
Run Code Online (Sandbox Code Playgroud)
模板:
{#values}
{?.}true{:else}false{/.}
{/values}
{~n}
{#values}
{#.}true{:else}false{/.}
{/values}
Run Code Online (Sandbox Code Playgroud)
它输出完全相同的结果:
falsefalsefalsefalsefalsefalsetruetruetruetruetruetruetrue
falsefalsefalsefalsefalsefalsetruetruetruetruetruetruetrue
Run Code Online (Sandbox Code Playgroud)
-
它们之间真的有什么区别吗?
smf*_*ote 11
#和之间有区别?,虽然它有些微妙,但在你的例子中没有显示出来.
?(存在):检查给定密钥的真实性.如果键是真的,执行正文,否则执行:else正文.
#(部分):检查给定密钥的真实性.如果键是真实的,请将上下文设置为键,然后执行正文.如果上下文是数组,则对数组中的每个元素执行一次body.如果密钥不真实,请不要更改上下文,并执行:else主体(如果存在).
所以,如果您的模板看起来像这样:
模板:
{?values}
{?.}true{:else}false{/.}
{/values}
{~n}
{#values}
{#.}true{:else}false{/.}
{/values}
Run Code Online (Sandbox Code Playgroud)
然后你的输出将是:
true
falsefalsefalsefalsefalsefalsetruetruetruetruetruetruetrue
Run Code Online (Sandbox Code Playgroud)
第一行检查是否values存在,但不会更改上下文.第二行检查当前上下文(在本例中是根上下文)是否存在,并打印出来true.由于?不进入上下文并循环遍历数组,true因此只打印一次.
| 归档时间: |
|
| 查看次数: |
2934 次 |
| 最近记录: |