如何在严格模式下获得“with”语句功能?

时间:2014-07-13 05:32:19

标签: javascript with-statement strict

将Javascript置于严格模式时,不再允许使用“with”语句。我怎么能复制它的目的呢?

例如,在搜索变量之前让它搜索​​数组......

        var a = {x:1, y:2};
        var x = 3;
        with (a) {
            console.log(x);
        }

控制台将显示1.但在严格模式下,必须删除“with”。如果控制台语句在它之外,它将显示3。

2 个答案:

答案 0 :(得分:1)

你不能

来自MDN with docs

  

建议不要使用with,并且在ECMAScript 5严格模式下禁止使用{{1}}。建议的替代方法是将要访问其属性的对象分配给临时变量。

答案 1 :(得分:0)

严格模式重新定义了Javascript的某些部分,旨在消除一些歧义和不兼容性。您无法 use strict,然后期望受影响的语言项目仍可用。

使用with会导致变量范围模糊不清 - 在您的示例中已经很明显 - 并且与ES6及更高版本中的建议标准不向前兼容。您可以在MDN网站here

上找到更全面的讨论

在您的具体示例中,您始终可以console.log(a.x);