/ 在JS中,关键字WITH是什么意思?/
with(object)command;
Run Code Online (Sandbox Code Playgroud)
with允许您创建以对象范围为边界的块。就像是:
var obj = {a: 1,b: 2, c: 3};
// more "tedious" to repeat "obj"
obj.a = 2;
obj.b = 3;
obj.c = 4;
// "easier" short-hand
with (obj) {
a = 3;
b = 4;
c = 5;
}
Run Code Online (Sandbox Code Playgroud)
但这会带来很多问题。Kyle Sympson的书“ Scope&Closures”的第二章“您不知道JS”中很好地解释了它的问题。我建议您阅读它。如果您不太了解自己在做什么,请不要使用它,否则可能很难调试。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with
“JavaScript 通过搜索与包含该非限定名称的脚本或函数的执行上下文关联的作用域链来查找非限定名称。‘with’语句在其语句主体求值期间将给定对象添加到该作用域链的头部。如果主体中使用的非限定名称与作用域链中的属性匹配,则该名称将绑定到该属性和包含该属性的对象。否则将引发 ReferenceError 。
obj = {'when': 'now'}
with (obj) {
console.log(when)
}
Run Code Online (Sandbox Code Playgroud)