在写这篇文章之前,xxx经已写过了几篇关于改函数赋值主题的文章,想要了解的朋友可以去翻一下之前的文章
var d = '全局的';
(function(){
alert(d == undefined);//合结步调4
var d = 123;
})();
(function(a){
var a;
alert(a == 123);//合结步调1,4;
})(123);
(function(){
alert(typeof a == 'function');//合结步调2,4;
function a(){} //这句换面下,结果还是一样
var a = 234;
})();
(function(){
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。
文章结束给大家分享下程序员的一些笑话语录: 姿势要丰富,经常上百度!