beetl为什么不支持变量作用域呢?

紫电清霜 发布于 2013/02/27 20:28
阅读 294
收藏 0

我同时set了"list"和"a"到request里面,然后用下列代码输出:

@ for(a in list){
    ${a}
@ }
${a}

这时候就提示:“变量已经定义”。

查看了beetl文档后发现“Beelt 中得变量同javascript 不一样,没有自己的作用域”。

我的问题是:为什么不支持作用域呢?(for循环里的a还不能和外边的a同名,这会不会不太方便啊?)

@beetl      @闲.大斌

谢谢!

加载中
0
闲大赋
闲大赋

0.6版本的时候是支持作用域的,但后来考虑到作用域下变量重名如果不报错,可能不是个好习惯。所以后来就取消了,所以1.2.0 目前不支持。

因此建议模板中变量名不要重

紫电清霜
紫电清霜
谢谢,了解了,虽然开始不习惯,慢慢适应吧
0
闲大赋
闲大赋

补充一下,如下情况是报变量已经定义,这不同于javascript:
var a= 1;

{

var a = "aaa";

}

 

但是,如下情况是可以的,这个跟js和java语义一致

{
var a = 1;
}

 

{

var a ="ccccc";

}

返回顶部
顶部