js 函數做用域

/*
 * 函數做用域    
 *     - 調用函數時建立函數做用域,函數執行完畢之後,函數做用域銷燬
 *     - 每調用一次函數就會建立一個新的函數做用域,他們之間是互相獨立的
 *     - 在函數做用域中能夠訪問到全局做用域的變量
 *         在全局做用域中沒法訪問到函數做用域的變量
 *     - 當在函數做用域操做一個變量時,它會先在自身做用域中尋找,若是有就直接使用
 *         若是沒有則向上一級做用域中尋找,直到找到全局做用域,
 *         若是全局做用域中依然沒有找到,則會報錯ReferenceError
 *     - 在函數中要訪問全局變量能夠使用window對象
 */

函數

//建立一個變量
var a = 10;

function fun(){
    
    var a = "我是fun函數中的變量a";
    var b = 20;
    
    //console.log("a = "+a);
    
    function fun2(){
        console.log("a = "+window.a);
    }
    
    fun2();
    
}

//fun();
//console.log("b = "+b);

/*
 * 在函數做用域也有聲明提早的特性,
 *     使用var關鍵字聲明的變量,會在函數中全部的代碼執行以前被聲明
 *     函數聲明也會在函數中全部的代碼執行以前執行
 */

spa

function fun3(){
    
    fun4();
    
    //console.log(a);
    
    var a = 35;
    
    function fun4(){
        alert("I'm fun4");
    }
    
}

//fun3();


var c = 33;


/*
 * 在函數中,不適用var聲明的變量都會成爲全局變量
 */code

function fun5(){
    //console.log("c = "+c);
    //c = 10;
    
    //d沒有使用var關鍵字,則會設置爲全局變量
    d = 100;
}

fun5();

//在全局輸出c
//console.log("d = "+d);

var e = 23;

...對象

/*
 * 定義形參就至關於在函數做用域中聲明瞭變量
 */
function fun6(e){
    alert(e);
}

fun6();
相關文章
相關標籤/搜索