我正在学习Liquid(使用grunt-liquid)。我用一个简单的for
循环遇到了一些非常奇怪的行为。也许你可以告诉我我做错了什么。
以下是我的代码的第1版,它按预期工作:
{% assign isThree = 'initial value' %}
{% for i in (1..9) %}
{% if i == 3 %}
{% assign isThree = true %}
{% else %}
{% assign isThree = false %}
{% endif %}
<p>{{ i }}: {{ isThree }}</p>
{% endfor %}
基本上,它循环遍历数字1到9,并显示每一个,以及指示数字是否为3的布尔值。这会产生预期的输出:
1: false
2: false
3: true
4: false
5: false
6: false
7: false
8: false
9: false
这是我的代码的第2版,它展示了有问题的奇怪行为。它与版本1完全相同,只是它在分配someOtherVar
之前现在分配了一个名为isThree
的变量:
{% assign isThree = 'initial value' %}
{% for i in (1..9) %}
{% assign someOtherVar = 'foo' %}
{% if i == 3 %}
{% assign isThree = true %}
{% else %}
{% assign isThree = false %}
{% endif %}
<p>{{ i }}: {{ isThree }}</p>
{% endfor %}
此更改根本不应影响输出,但确实如此!实际上,它使得分配给isThree
的值在循环的 next 迭代之前不可用:
1: initial value
2: false
3: false
4: true
5: false
6: false
7: false
8: false
9: false
如果我将someOtherVar
作业移到 {% if %}
块之下,那么一切正常。
这到底是怎么回事?