在js中不僅有原型鏈還存在這作用域和作用域鏈。首先在介紹作用域和作用域鏈之前,先讓我們瞭解一下局部變量和全局變量
1.全局變量和局部變量
2.函數作用域
<script type="text/javascript">
//函數作用域
var num=2;
function fun(){
console.log(num);
var num=3;
console.log(num);
}
fun();
</script>
在這個demo中,你的第一印象會輸出什麼呢? <script type="text/javascript">
//函數作用域
var num=2;
function fun(){
var num;
console.log(num);
num=3;
console.log(num);
}
fun();
</script>
很明顯的看到在第一個輸出的上面我們添加了一個var num;此時並沒有賦值,所以這時候在函數內部輸出num的話得出的值就是undefined。3.函數作用域鏈
<script type="text/javascript">
var num=1;
function fun(){
var num=2;
function fun1(){
var num=3;
console.log(num);
}
function fun2(){
console.log(num);
}
fun1();
fun2();
}
fun();
</script>
上面的代碼片段其實很清晰的表明了函數作用域中變量的查找規律,輸出結果是3,2.