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

JavaScript 變數(shù)提升

下面的程式是什麼結(jié)果?

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文網(wǎng)(php.cn)</title> 
<script type="text/javascript">
var foo = 1;
function bar() {
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
</script>
</head>
<body>
</body>
</html>

結(jié)果彈出: 10

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文網(wǎng)(php.cn)</title> 
<script type="text/javascript">
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
</script>
</head>
<body>
</body>
</html>

#結(jié)果彈出:1

嚇你一跳吧?發(fā)生了什麼事情?這可能是陌生的,危險的,迷惑的,同樣事實上也是非常有用和印象深刻的JavaScript語言特性 -- 變數(shù)提升。



#JavaScript 初始化不會提升

JavaScript 只有宣告的變數(shù)會提升,初始化的不會。

1.

<!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>

2.

<!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>

2 的y 輸出了?undefined,這是因為變數(shù)宣告(var y) 提升了,但是初始化(y = 7) 並不會提升,所以y 變數(shù)是未定義的變數(shù)。



在頭部宣告你的變數(shù)

對大多數(shù)程式設(shè)計師來說並不知道JavaScript 變數(shù)提升。

如果程式設(shè)計師不能很好的理解變數(shù)提升,他們寫的程式就容易出現(xiàn)一些問題。

為了避免這些問題,通常我們在每個作用域開始前聲明這些變量,這也是正常的 JavaScript 解析步驟,易於我們理解。



繼續(xù)學(xué)習(xí)
||
<!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.5; // 初始化 x elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = "x 為:" + x + ",y 為:" + y; // 顯示 x 和 y var y = 7; // 初始化 y </script> </body> </html>