javascript函数执行前期变量环境初始化过程
(function(){
alert(d == undefined);//结合步骤4
var d = 123;
})();
(function(a){
var a;
alert(a == 123);//结合步骤1,4;
})(123);
alert(typeof a == 'function');//结合步骤2,4;
function a(){} //这句换下面,结果还是一样
var a = 234;
})();
alert(typeof a == 'function');//结合步骤2,4
var a = 234;//这里赋值是在函数初始化完成后执行阶段完成的,因此下面a的类型变成了number
alert(typeof a == 'number');//并没有违反步骤2,4规则,由于这是在执行期间判断的,上面的逻辑已经将a改变了
function a(){}
})();
函数执行前期初始化变量环境走了如下过程:
1、遍历参数列表,添加到函数变量环境并赋值。
2、遍历函数声明,如果函数变量环境中存在则赋值,不存在则添加并赋值。
3、添加arguments并赋值【这里不同浏览器表现差异较大,并不一定都是这样】
4、遍历函数中所有的变量声明,如果变量环境中存在则不作任何操作,不存在则添加并赋值undefined。
转载于:https://www.cnblogs.com/huzhiming/archive/2012/12/07/2806849.html
javascript函数执行前期变量环境初始化过程相关推荐
- 【译】理解Javascript函数执行—调用栈、事件循环、任务等
原文作者:Gaurav Pandvia 原文链接:medium.com/@gaurav.pan- 文中部分链接可能需要梯子. 欢迎批评指正. 现如今,web开发者(我们更喜欢被叫做前端工程师)用一门脚 ...
- 「译」理解Javascript函数执行—调用栈、事件循环、任务等
现如今,web开发者(我们更喜欢被叫做前端工程师)用一门脚本语言就能做任何事情,从提供浏览器中的交互,到开发电脑游戏.桌面工具.跨平台移动应用,甚至可以在服务端部署(如最流行的Node.js)来连结任 ...
- 从JavaScript函数重名看其初始化方式
今天有个哥们问我要是JavaScript函数重名了会有什么后果?开始我没有细想,就说可能会出错吧,可是等我实验完了发现页面没有任何脚本错误提示,而且程序也运行了,只是对同名函数的调用执行了位置靠后的一 ...
- [译]深入理解JavaScript函数执行—调用栈,事件循环和任务等
Web 开发者,或者前端工程师(我们更喜欢别人这么称呼)现如今几乎能做所有的工作,从扮演一个浏览器内部交互性的角色,到制作电脑游戏.桌面控件.跨平台手机应用,甚至还可以把它写在服务器端(最流行的是no ...
- Javascript函数执行、new机制以及继承
JS函数执行 一个JavaScript函数fn,被执行有三种途径: fn() new fn() fn.call()或fn.apply() new机制以及继承 JavaScript中定义了一种对象,称之 ...
- php初始化函数赋值,PHP变量的初始化以及赋值方式介绍
什么是变量 变量通俗的来说是一种容器.根据变量类型不同,容器的大小不一样,自然能存放的数据大小也不相同.在变量中存放的数据,我们称之为变量值. PHP 中的变量用一个美元符号后面跟变量名来表示.变量名 ...
- shiro web环境初始化过程
在web工程中使用shiro的时候需要配置一个shiro的listenser(EnvironmentLoaderListener)和一个shiro的filter(ShiroFilter). liste ...
- Javascript函数内静态变量与实例变量
严格的来讲,js里面并没有静态与私有的概念,所有成员属性都是公开的,下面只是参考java语言,通过某种方式来实现类似的概念. 静态变量 1.私有静态变量 所有实例共享.因为是私有的变量,所以不能通过函 ...
- javascript的执行上下文
https://juejin.im/post/5ba32171f265da0ab719a6d7 https://juejin.im/entry/599867b2518825241e220eaa 我只是 ...
最新文章
- python语言代码片段-有用的Python代码片段
- C++流操纵算子(格式控制)
- linux 用户态 spinlock,spinlock作用
- 你的手机上未安装应用程序”的解决方案
- 常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误
- java 蓝桥杯算法训练 秘密行动
- postgresql cast转换类型
- java求最小步数_关于java:查找两点之间的最小步数?
- 【安装包】gcc编译器
- 商厂里调货拿包包程序
- 大一计算机期末考试高数试卷,大一高数期末考试试题
- SAS9.3安装经验
- deepfacelive实时AI换脸直播使用教程
- 机器学习(周志华) 第十六章强化学习
- 台风怎么看内存颗粒_使用300多元的D4 16G内存是种什么体验
- html5s做表单,5S推行手册表单.doc
- 计算机主机上有几个按钮,键盘按键有什么功能 电脑键盘上各个按键功能详解...
- 基于ThreeJS的3D地球
- LWN:替换 congestion_wait()!
- 有关爬虫加载Ajax数据或请求json数据集的(快速高效)方法