函數中變量的作用域以及變量提升
一、變量作用于域
1、函數就是一種特殊的變量
2、 一般函數内部不嵌套,可讀性差
3、變量的作用域向上尋找,距離該變量最近的{ },變量的作用域就是在該{ }的範圍之内
看簡單代碼案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//函數就是一種特殊的變量
//一般函數内部不嵌套函數,可讀性差。
function aa(){
var a =10;
//變量的作用域向上尋找,距離該變量最近的函數的大括号
//變量的作用範圍,就是該{}之内的範圍.
function bb(){
console.log(a);
}
}
aa();
bb();
/* bb這個函數夾在aa這個函數裡面,相當于在函數内部定義了一個變量即她是一個局部變量
,是以在函數aa外部執行bb()是會報錯的。*/
console.log(a);
</script>
</body>
</html>
執行結果:console中顯示bb沒有定義
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEDO5MzNxMTMyITMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、變量提升
1、 變量會把作用域提升到整個作用域的最前面,指派還是在原來的位置。
2、全局變量和局部變量同時存在。優先局部
執行個體一:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
console.log(a);
var a=10;
//變量會把作用于提升到整個作用域的最前面。
//指派還是在原來的位置
//相當于
var a;
//console.log(a);得到的值為undefined
a=10;
</script>
</body>
</html>
執行個體二:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
console.log(a);
var a=10;
//變量會把作用于提升到整個作用域的最前面。
//指派還是在原來的位置
//相當于
var a;
//console.log(a);得到的值為undefined
a=10;
</script>
</body>
</html>
執行結果均為undefined;可以指派代碼試一試;