1. 程式人生 > 其它 >函式作用域

函式作用域

<script>
/*
*函式作用域
* - 呼叫函式時建立函式作用域,函式執行完畢以後,函式作用域銷燬
* - 每呼叫一個函式就會建立一個新的函式作用域,他們之間是互相獨立的*
* - 在函式作用域中可以訪問到全域性作用域的變數
* - 在全域性作用域中無法訪問到函式作用域的變數(宣告)
* -當在函式作用域中操作一個變數時,它會先在自身作用域中尋找,如果有就直接使用
* 如果沒有則向上一級作用域中尋找,直到找到全域性作用域。 如果全域性作用域中依然沒有則會報錯ReferenceError

*/
//建立一個變數
var a = 10;
function fun(){
var a = "我是函式中的變數a";
var b = 20;
console.log("a ="+a);
}
// fun();//顯示
// console.log("b ="+b);//在函式中宣告在全域性中訪問

/*
*若想再在函式中找全域性中的a----輸入window.a方可列印全域性的a的值--使用window物件
*/



/*
*在函式作用域中也有宣告提前的特性,
* 使用var關鍵詞宣告的變數,會在函式中所有的程式碼執行之前被宣告


function fun3(){
var a;
console.log(a);

a = 35;//var a;a=35是未賦值的

}
fun3(); */

/*
*函式宣告也會在函式中所有的程式碼執行之前執行、、相當於函式中的全域性宣告函式,,,,只是週期短fun3()呼叫完了就執行完了。但在全域性中宣告函數週期是script
*/

function fun3(){
fun4();
// console.log(a);

var a = 35;

function fun4() {

alert("I'm fun4");
}

}
fun3();

/*
*在函式中,不使用var宣告的變數都會成為全域性變數
*/
var c = 33;
function fun5(){
console.log("c ="+c);//函式中沒有向上一級找var c = 33;
c = 10;
}
fun5();
//在全域性輸出c
console.log("c ="+c);//列印顯示10




</script>