哪种方式能改变作用域链
来源:互联网 发布:淘宝店铺找货源上架 编辑:程序博客网 时间:2024/06/06 15:03
1.while的话只是在函数局部环境或者全局环境运行,并不会改变作用域链。
2.try catch红皮书第四章讲的清清楚楚:虽然执行环境的类型总共只有两种--全局和局部(函数),但还是有其他办法来延长作用域链。这么说是因为有些语句可以在作用域链的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。在两种情况下回发生这种现象。具体来说,就是当执行流进入下列任何一个语句时,作用域链就会得到加强:
try catch语句的catch块;
with语句;
这两个语句都会在作用域链的前端添加一个变量对象。对WITH语句来说,将会指定的对象添加到作用域链中。对catch语句来说,会创建一个新的变量对象,其中包含的是被抛出的错误对象的声明。
Example:
function builderUrl(){
var qs="?debug=true";
with(location){
var url = href + qs;
}
return url;
}
在此,with语句接受的是location对象,因此其变量对象中就包含了Location对象的所有属性和方法,而这个变量对象被添加到了作用域链的前端。builderUrl()函数中定义了一个变量qs。当在with语句中引用变量href时(实际引用的是location.href),可以在当前执行环境的变量对象中找到。当引用变量qs时,引用的则是在buildUrl()中定义的那个变量,而该变量位于函数环境的变量对象中。至于with语句内部,则定义了一个名为url的变量,因而url就成了函数执行环节的一个部分,所以可以作为函数的值被返回。
阅读全文
0 0
- 哪种方式能改变作用域链
- js中可以改变作用域的三中方式(改变this)
- 数据访问之改变作用域链
- Java序列化的几种方式以及序列化的作用(文章有所改变)
- 改变能改变的
- 改变能改变的
- JS - 关于改变Javascript的作用域链
- 当你改变了看世界的方式,你就能改变所看的世界
- apply()、call()、bind()改变作用域
- JS基础--with改变作用域
- 区块链技术改变移动支付的8种方式
- 人生能改变
- 教育能改变吗
- 改变方式
- 没有哪本书能改变你的命运,只有阅读本身能改变你的命运
- C++ 作用域符号:: 常用三种方式
- servlet 数据存储几种方式和jsp 作用域
- 两种方式改变display属性值
- Day02 nginx
- 《Angular2入门系列实践》——实现页面动画效果
- 什么是软件质量——基于ISO质量定义对软件质量的理解
- 实习感想
- python学习笔记(十一)标准库sys
- 哪种方式能改变作用域链
- Broadcast Receiver 基础
- AutoEncoder
- 机房合作感受
- Kotlin-Android中取代java的一种开发语言
- Centos7mini版安装VMwareTools
- Flex 布局语法教程
- 图的关键路径
- leetcode 34. Search for a Range