变量作用域和内存问题--笔记5(含问题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量作用域和内存问题--笔记5(含问题)相关的知识,希望对你有一定的参考价值。

作用域链得到延长的情况:

  1. try-catch语句的catch块:会创建一个新的变量对象,其中包含的是被抛出的错误对象声明。
  2. with语句:会将指定的对象添加到作用域链中。

技术分享

技术分享

 

  •  问1:为什么url变成了buildUrl的变量,它不是在with中定义的吗?
  •  答1:with语句关联了location对象,这意味着在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性,如果发现了同名属性,则以location对象属性的值作为变量的值。在该例中,url,qs和href首先都是局部变量,但是在局部环境中找不到href的定义,而在location对象中找到了href,所有href就是location.href,而其他两个变量在局部环境中均有定义,在location对象中却没有,不再多说。

以上是关于变量作用域和内存问题--笔记5(含问题)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript学习笔记—— 4. 变量作用域和内存问题

变量作用域和内存问题--笔记7

变量作用域和内存问题--笔记6

变量作用域和内存问题--笔记3

变量作用域和内存问题

JavaScript学习笔记五:变量作用域和内存问题