學習目標:可以說出Javascript的兩種做用域java
可以區分全局變量和局部變量es6
可以說出如何在做用域鏈中查找變量的值函數
1.做用域學習
<script> //1.javaScript做用域:就是代碼名字(變量)在某個範圍內起做用和效果 目的是爲了提升程序的可靠性更重要的是減小命名衝突。 //2.js的做用域(es6)以前:全局做用域 局部做用域 //3.全局做用域:整個script標籤 或者是一個單獨的js文件 var num = 10; //4.在函數內部就是局部做用域(函數做用域) 這個代碼的名字只在函數內部起效果和做用 function fn (){ //局部做用域 var num = 20; } </script>
2.1變量做用域的分類spa
根據做用域的不一樣 變量能夠分爲兩種:code
全局變量blog
局部變量ip
<script> //變量的做用域:根據做用於的不一樣咱們變量分爲全局變量和局部變量 //1.全局變量:在全局做用域下的變量,在全局下均可使用 // 注意:若是在函數內部 沒有聲明直接賦值的變量也屬於全局變量 var num = 10; //num就是一個全局變量 console.log(num); function fn(){ console.log(); var num = 10; } //2.局部變量 在局部做用域下的變量 後者在函數內部的變量就是 局部變量 //注意函數的形參也能夠看做局部變量 3.從執行效率來看全局和局部 //(1)全局變量只有在內存關閉的時候纔會銷燬,比較佔內存資源 //(2)局部變量當咱們程序執行完畢就會銷燬比較節約內存資源 </script>
3.做用域鏈(很簡單)就近原則內存
<script> //做用域鏈:內部函數訪問外部函數的變量,採起的是鏈式查找的方式來決定取哪一個值,這種結構咱們稱之爲做用域鏈 // 鏈式查找 就近原則 var num = 10; function fn(){//外部函數 var num = 20; function fun(){//內部函數 console.log(num); } } </script>