1. 程式人生 > >js中變量的聲明

js中變量的聲明

fun undefine color argument def 尋找 col alert 什麽

大家都知道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(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(){}

undefined

[function,2,3]

ee

444

6 我們在理解變量聲明的時候。首先是var的,然後是函數體的,最後是參數

js中變量的聲明