function buildUrl() {
var qs = "?debug=true";
with(location) {
var url = href + qs;
}
return url;
}为什么最后能够返回url这个变量?有点迷js高级程序设计上的原话看不懂:"至于with 语句内部,则定义了一个名为 url 的变量,因为 url 就成为了函数执行环境的一部分,所以可以作为函数的值被返回"我的理解是:with 语句不是全局作用域也不是函数作用域,所以能够返回buildUrl函数内能够获取 url变量;
类似这样:{
var a = 5
}
console.log(a)
希望大佬能够解释下
var只作用于函数作用域或全局作用域。不作用于with添加的用域链。
就算用 let 也只是声明with()的{}语句块的块作用域变量,与with添加的用域链也没有关系。