我应该在生成的代码中使用“with”语句吗?

时间:2011-09-01 17:43:26

标签: javascript code-generation

我正在开发一种编译成javascript的编程语言,生成的代码包含太多的重复,如:

cls.$init = function(){
    this.property1 = {};
    this.anotherProperty = [1, 2, 3, 4];
    this.yetAnotherProperty = "test";
    /* etc */
}

使用with语句可以将其缩小(在这种情况下,在初始化许多属性时):

cls.$init = function(){
    with(this){
        property1 = {};
        anotherProperty = [1, 2, 3, 4];
        yetAnotherProperty = "test";
        /* etc */
    }
}

但问题是......我应该在生成的代码中使用with语句吗? (以后不打算修改)

2 个答案:

答案 0 :(得分:8)

当使用严格模式时,with语句将在下一个ECMAScript标准中消失,所以我习惯于不使用它。

https://developer.mozilla.org/en/JavaScript/Strict_mode#Simplifying_variable_uses

答案 1 :(得分:3)

为什么您担心自动生成代码中的重复?在gzip压缩并且在运行时添加with会产生开销时,它可能会被压缩掉。道格拉斯·克罗克福德也说它会消失:http://www.yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/#comment-586082