国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

JavaScript 變量提升


JavaScript 中,函數(shù)及變量的聲明都將被提升到函數(shù)的最頂部。

JavaScript 中,變量可以在使用后聲明,也就是變量可以先使用再聲明。

以下兩個(gè)實(shí)例將獲得相同的結(jié)果:

實(shí)例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>

<p id="demo"></p>
<script>
x = 5; // 變量 x 設(shè)置為 5
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x;                     // 在元素中顯示 x
var x; // 聲明 x
</script>

</body>
</html>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

實(shí)例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>

<p id="demo"></p>
<script>
var x; // 聲明 x
x = 5; // 變量 x 設(shè)置為 5
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x; 
</script>

</body>
</html>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

要理解以上實(shí)例就需要理解 "hoisting(變量提升)"。

變量提升:函數(shù)聲明和變量聲明總是會(huì)被解釋器悄悄地被"提升"到方法體的最頂部。


JavaScript 初始化不會(huì)提升

JavaScript 只有聲明的變量會(huì)提升,初始化的不會(huì)。

以下兩個(gè)實(shí)例結(jié)果結(jié)果不相同:

實(shí)例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>

<p id="demo"></p>
<script>
var x = 5; // 初始化 x
var y = 7; // 初始化 y
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x + " " + y;           // 顯示 x 和 y
</script>

</body>
</html>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


實(shí)例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文網(wǎng)(php.cn)</title>
</head>
<body>

<p id="demo"></p>
<script>
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = "x 為:" + x + ",y 為:" + y;           // 顯示 x 和 y
var y = 7; // 初始化 y
</script>

</body>
</html>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

實(shí)例 2 的 y 輸出了 undefined,這是因?yàn)樽兞柯暶?(var y) 提升了,但是初始化(y = 7) 并不會(huì)提升,所以 y 變量是一個(gè)未定義的變量。

實(shí)例 2 類(lèi)似以下代碼:

var x = 5; // 初始化 x
var y;     // 聲明 y

elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y;           // 顯示 x 和 y

y = 7;    // 設(shè)置 y 為 7

在頭部聲明你的變量

對(duì)于大多數(shù)程序員來(lái)說(shuō)并不知道 JavaScript 變量提升。

如果程序員不能很好的理解變量提升,他們寫(xiě)的程序就容易出現(xiàn)一些問(wèn)題。

為了避免這些問(wèn)題,通常我們?cè)诿總€(gè)作用域開(kāi)始前聲明這些變量,這也是正常的 JavaScript 解析步驟,易于我們理解。

NoteJavaScript 嚴(yán)格模式(strict mode)不允許使用未聲明的變量。
在下一個(gè)章節(jié)中我們將會(huì)學(xué)習(xí)到 "嚴(yán)格模式(strict mode)"