JavaScript中"with"做什么?

str*_*ade 19 javascript with-statement

我看到了JavaScript代码with.这有点令人困惑.它做了什么以及如何正确使用?

with (sObj) return options[selectedIndex].value;
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 22

它增加了块中包含的语句的范围:

return sObj.options[selectedIndex].value;
Run Code Online (Sandbox Code Playgroud)

可以变成:

with (sObj)
    return options[selectedIndex].value;
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它并没有做很多...但请考虑以下内容:

var a, x, y;
var r = 10;
a = Math.PI * r * r;
x = r * Math.cos(PI);
y = r * Math.sin(PI /2);
Run Code Online (Sandbox Code Playgroud)

变为:

var a, x, y;
var r = 10;
with (Math) {
  a = PI * r * r;
  x = r * cos(PI);
  y = r * sin(PI / 2);
}
Run Code Online (Sandbox Code Playgroud)

...节省了几次击键.Mozilla文档实际上可以更详细地解释一些事情(以及使用它的优点和缺点):

与 - Mozilla开发人员中心


chi*_*s42 10

with声明是纯粹的语法糖,但它也可能会导致一些讨厌的错误.

请参阅声明被认为有害的澄清:

如果您无法阅读某个程序并确信您知道它将要执行的操作,那么您就不能确信它能够正常工作.因此,with应避免使用该陈述.

  • ++提到'with'的缺点 (2认同)