最高半折刷qq各种业务和钻(家里人自己开的,尽管放心,大家多捧捧场)

sking7

导航

关于undefined在函数中被重新赋值后的变化

       var undefined = 123;
function a(something, undefined) {


alert(undefined);//123
}
a('Hello World',42);
var undefined = 123;
(function(something, foo, undefined) {
// 局部作用域里的 undefined 变量重新获得了 `undefined` 值
alert(undefined);//undefined
})('Hello World', 42);

一个函数不同的构造方式,结果却恰恰相反,谁能给解释下。。。

看了一篇文章,琢磨透了。。

()是定义的一个作用域。。undefined会把作用域内的变量(undefined)提到作用域开始先赋值。。

因为foo,something作为参数已经赋值,而undefined没有赋值,所以被重新定义为undefined。(如果再加一个参数,argu2,打出来也是undefined)

结合另外一个例子,加深理解下

var myvar = 'my value';  

(function() {
alert(myvar); // undefined
var myvar = 'local value'; //1
})();

看上去和上面的undefined一样,其实注意(1)处,其实这个赋值,会导致提升变量声明,

var 表达式(和 function 声明都)将会被提升到当前作用域的顶部。”

相当于

var myvar;
alert(myvar);
....

下面看一个function提升声明的例子

                //bar();报错
var bar = function() {alert('bar');};
var someValue = 42;

test();
function test(data) {
alert('test');//打印
}





posted on 2011-10-09 23:05  G.N&K  阅读(839)  评论(0编辑  收藏  举报