with() - 语句应该适用于嵌套函数吗?

时间:2011-05-31 08:46:56

标签: javascript

请使用以下代码:

var a = new Object();
a.meep = 5;

function foo() {
  with (a) {
    function bar() {
      return meep;
    }
    return bar();
  }
}

这样的代码在Chrome中对我失败并在Firefox中工作。哪个是对的?

2 个答案:

答案 0 :(得分:1)

正确的做法是永远不要使用with。永远。用任何语言。

多年来导致的错误数量和浪费的开发时间with ......应该位于goto下方的黑名单中。

如果您确实不想键入,请使用代码完成或将长表达式指定给短变量。那就是说,我觉得这很重要。它适合Javascript的其他魔术范围。 :)

答案 1 :(得分:0)

作为一般建议:不要使用。

但是,要让您的代码在Chrome中运行,请更改:

var a;

为:

var a=new Object();

function bar() {

为:

var bar = function() {

提供完整的代码:

var a=new Object();
a.meep = 5;

function foo() {
  with (a) {
    var bar = function() {
      return meep;
    }
    return bar();
  }
}
相关问题