手机版

关于Javascript范围链的八个总结

时间:2021-11-12 来源:互联网 编辑:宝哥软件园 浏览:

1.JavaScript函数的范围链分为定义时间范围链和运行时间范围链;2.当一个函数被定义时,它有一个属性[[作用域]]指示它的定义作用域链。定义时,作用域链[[scope]]遵循这样的规则:定义函数时,作用域链[[scope]]在执行其所在的外部函数时始终是作用域链;3.全局函数范围链的定义只包含窗口的属性;4.函数执行时,作用域链在定义时总是将作用域链的头部压入当前活动对象(包含此对象、参数、参数和局部变量);5.当函数被执行时,变量寻址总是从作用域链的顶部往下看;全局变量的寻址速度最慢。6.当内部函数被执行时,它仍然可以访问其完整的范围链。这就是为什么闭包可以访问运行时已经结束的外部函数定义的变量。7.当函数执行中遇到with语句时,with指定的对象的所有属性将作为作用域链的顶部被暂时压在作用域链的顶部;8.当函数执行遇到catch时,会暂时将catch指定的错误对象按在作用域链的顶部作为作用域链的顶部;举个例子,画个范围链加深理解:有这么一段代码:复制代码如下: function assign events(){ var id=' xdi 9592 ';document . getelementbyid(' save-BTN ')。onclick=function(event){ SaveDocument(id);};}如果这个函数生成的匿名闭包叫做Closure,下图是赋值事件执行时作用域链和闭包的定义:

版权声明:关于Javascript范围链的八个总结是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。