问题描述
- JS如何延长作用域链?
-
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只有块级变量的概念,延长作用域可以有很多方法,比如使用闭包
解决方案三:
js的作用域链理解
javascript延长作用域链
JS - 关于改变Javascript的作用域链
时间: 2024-11-08 20:26:43