1、JS的with语句如何延长作用链?如下一段代码:
function buildURI(){
var qs = '?debug = true';
with(location){
var url = href + qs;
}
return url;
}
alert(buildURI());
url如何会在with语句外面就能被调用?它不是location对象的属性吗?href是否跟url一样,也可以被外面的访问?
2、try-catch语句呢?
3、还有没有其他延长作用域链的方法?
url是你定义的变量,也不是location的属性。with语句块是没有作用域的,所以url在buildURI中都可以访问,除非你用的es6的let定义,而不是var定义
2同理
不懂你的延长作用域链是什么问题。。应该是你没搞清楚var申明的变量作用域
with不被建议采用,js只有块级变量的概念,延长作用域可以有很多方法,比如使用闭包