作用域链得到延长的情况:
- try-catch语句的catch块:会创建一个新的变量对象,其中包含的是被抛出的错误对象声明。
- with语句:会将指定的对象添加到作用域链中。
- 问1:为什么url变成了buildUrl的变量,它不是在with中定义的吗?
- 答1:with语句关联了location对象,这意味着在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性,如果发现了同名属性,则以location对象属性的值作为变量的值。在该例中,url,qs和href首先都是局部变量,但是在局部环境中找不到href的定义,而在location对象中找到了href,所有href就是location.href,而其他两个变量在局部环境中均有定义,在location对象中却没有,不再多说。
时间: 2024-10-26 03:39:35