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關鍵字聲明的變量,會在函數中所有的代碼執行之前被聲明
 *     函數聲明也會在函數中所有的代碼執行之前執行
 */

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

//fun3();


var c = 33;


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

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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM