一. 作用域
分為全局作用域和函數(shù)作用域
函數(shù)作用域簡(jiǎn)言之就是:變量在聲明他們的函數(shù)體以及這個(gè)函數(shù)體嵌套的任意函數(shù)體內(nèi)都是有定義的。
二 .聲明提前
變量在聲明之前就已經(jīng)可用。我們稱(chēng)這種特性為聲明提前,也就是函數(shù)里的所有變量都被“提前”至函數(shù)體的頂部。
有以下幾種方式
1. var a;? ? ?即:? var a = undefined;
2. a = 1;? ? ? ? 即:? ?var a = 1;(全局變量)
3. var a = 1;? ?即:? 前兩種的組合
下面陷阱分析:
var?v?="yoyo";? ?//全局變量聲明,全局作用域,即:var v = undefined;?var?v?="yoyo";
(function(){?
????console.log(v);? ? ?//由于聲明提前,此段代碼前有一段var v = undefined; 函數(shù)作用域,所以此時(shí)輸出undefined
?????var?v?="check?now";? ? ?//此處?var?v?="check?now";賦值了局部變量;所以下方輸出"check?now"
? ? ?console.log(v);?
})();?