js中變量的聲明
阿新 • • 發佈:2017-05-18
fun undefine color argument def 尋找 col alert 什麽
console.log(aa);
console.log(arguments);
var a = "ee";
var aa = "444";
arguments = 6;
console.log(a);
console.log(aa);
console.log(arguments);
}
aa(1,2,3);答案是 function a(){}
大家都知道js中變量的聲明是要提前的,下面有4個樣例:
1.if(!"t" in window){
var t = 1;
}
alert(t);答案是undefined,為什麽呢,就是由於變量聲明提前了。所以t是在window對象裏面的,可是沒有走以下的推斷。所以並沒有賦值,答案就是undefine
2.var num = 100;
function fn(){
var num = num + 1;
return num;
}
falert(n());答案依舊是NaN,由於在函數體內部首先把var num提前,這樣在賦值的時候首先去作用域鏈尋找num這個參數在本函數中找到。可是發現沒有賦值,num + 1中的值是undefined,這樣進行運算後答案就是NaN,記住我們找對象的時候是
層級往上面找的。找不到才找外面的。
3.var b = (function(){
function fn(){
return 1;
}
return fn();
function fn(){
return 2;
}
var fn;
fn = 3
})();
alert(b)。答案是2,由於首先把var fn提前。然後函數體那樣子定義也是一種函數的聲明。而且函數的聲明會在同名參數之後,所以就是var ,fn,fn,然後就renturn了,沒有走之後的fn=3,所以答案就是2
4.function aa(a,b,c){
function a(){}
console.log(a);
console.log(arguments);
var a = "ee";
var aa = "444";
arguments = 6;
console.log(a);
console.log(aa);
console.log(arguments);
}
aa(1,2,3);答案是 function a(){}
undefined
[function,2,3]
ee
444
6 我們在理解變量聲明的時候。首先是var的,然後是函數體的,最後是參數
js中變量的聲明