亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

JavaScript 作用域

JavaScript 作用域

在 JavaScript 中, 對(duì)象和函數(shù)同樣也是變量。

在 JavaScript 中, 作用域?yàn)榭稍L問變量,對(duì)象,函數(shù)的集合。

JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。


在JavaScript中,用var申明的變量實(shí)際上是有作用域的。

如果一個(gè)變量在函數(shù)體內(nèi)部申明,則該變量的作用域?yàn)檎麄€(gè)函數(shù)體,在函數(shù)體外不可引用該變量:

'use strict';function foo() {
? ?var x = 1;
? ?x = x + 1;
}

x = x + 2; // ReferenceError! 無法在函數(shù)體外引用變量x

如果兩個(gè)不同的函數(shù)各自申明了同一個(gè)變量,那么該變量只在各自的函數(shù)體內(nèi)起作用。換句話說,不同函數(shù)內(nèi)部的同名變量互相獨(dú)立,互不影響:

'use strict';function foo() {
? ?var x = 1;
? ?x = x + 1;
}function bar() {
? ?var x = 'A';
? ?x = x + 'B';
}

JavaScript 局部作用域

變量在函數(shù)內(nèi)聲明,變量為局部作用域。

局部變量:只能在函數(shù)內(nèi)部訪問。

// 此處不能調(diào)用 carName 變量

function myFunction() {
??? var carName = "Volvo";
? // 函數(shù)內(nèi)可調(diào)用 carName 變量
}

注意:

因?yàn)榫植孔兞恐蛔饔糜诤瘮?shù)內(nèi),所以不同的函數(shù)可以使用相同名稱的變量。

局部變量在函數(shù)開始執(zhí)行時(shí)創(chuàng)建,函數(shù)執(zhí)行完后局部變量會(huì)自動(dòng)銷毀。

全局作用域

不在任何函數(shù)內(nèi)定義的變量就具有全局作用域。實(shí)際上,JavaScript默認(rèn)有一個(gè)全局對(duì)象window,全局作用域的變量實(shí)際上被綁定到window的一個(gè)屬性:

'use strict';

var course = 'Learn JavaScript';

alert(course); // 'Learn JavaScript'

alert(window.course); // 'Learn JavaScript'

因此,直接訪問全局變量course和訪問window.course是完全一樣的。

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文網(wǎng)(php.cn)</title> 
</head>
<body>
<p>全局變量在任何腳本和函數(shù)內(nèi)均可訪問。</p>
<p id="demo"></p>
<script>
var carName = "Volvo";
myFunction();
function myFunction() 
{
    document.getElementById("demo").innerHTML =
"這里是 " + carName;
}
</script>
</body>
</html>

JavaScript 變量生命周期

JavaScript 變量生命周期在它聲明時(shí)初始化。

局部變量在函數(shù)執(zhí)行完畢后銷毀。

全局變量在頁(yè)面關(guān)閉后銷毀。

函數(shù)參數(shù)

函數(shù)參數(shù)只在函數(shù)內(nèi)起作用,是局部變量。


繼續(xù)學(xué)習(xí)
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> var a =1; function test(){ alert(a); //a為undefined! 這個(gè)a并不是全局變量,這是因?yàn)樵趂unction scope里已經(jīng)聲明了(函數(shù)體倒數(shù)第4行)一個(gè)重名的局部變量, //所以全局變量a被覆蓋了,這說明了Javascript在執(zhí)行前會(huì)對(duì)整個(gè)腳本文件的定義部分做完整分析,所以在函數(shù)test()執(zhí)行前, //函數(shù)體中的變量a就被指向內(nèi)部的局部變量.而不是指向外部的全局變量. 但這時(shí)a只有聲明,還沒賦值,所以輸出undefined。 a=4 alert(a); //a為4,沒懸念了吧? 這里的a還是局部變量哦! var a; //局部變量a在這行聲明 alert(a); //a還是為4,這是因?yàn)橹耙寻?賦給a了 } test(); alert(a); //a為1,這里并不在function scope內(nèi),a的值為全局變量的值 </script> </head> <body> </body> </html>
提交重置代碼