【发布时间】:2017-04-04 17:42:28
【问题描述】:
function buildUrl() {
var qs = "?debug=true";
with(location){
var url = href + qs;
}
return url;
}
buildUrl(); // it will work. WHY?
我正在研究 N. Zakas 的“面向 Web 开发人员的专业 JavaScript”,我遇到了这个 sn-p。据我了解,with 是一个通过将 location 对象推到前面来增加范围链的语句。
似乎url 局部变量被分配给了一个函数激活对象。为什么不分配给location?
【问题讨论】:
-
什么是“功能激活对象”? “将语句绑定到变量”是什么意思?无论如何,
url是一个声明为变量的变量,永远不会被解释为location的属性。 -
@torazaburo softwareengineering.stackexchange.com/a/189973
标签: javascript with-statement scope-chain