首先介紹預解析,雖然預解析字面意思很好理解,但是卻是出坑出的最多的地方,也是bug經常會有的地方,利用好預解析的特性可以解決很多問題,並且提高代碼的質量及數量,瀏覽器在解析代碼前會把變數的聲明和函數(整個函數體)提前到當前作用域的最頂端。 細節問題: 在多對的script標簽中如果有相同的函數,那它 ...
首先介紹預解析,雖然預解析字面意思很好理解,但是卻是出坑出的最多的地方,也是bug經常會有的地方,利用好預解析的特性可以解決很多問題,並且提高代碼的質量及數量,瀏覽器在解析代碼前會把變數的聲明和函數(整個函數體)提前到當前作用域的最頂端。
細節問題: 在多對的script標簽中如果有相同的函數,那它們相互之間是不會受影響的,在第二對script標簽中聲明變數或者是創建函數,在第一對script標簽中是無法訪問到的,這就說明瞭,javaScript的預解析只會在各自的script標簽中發生,同時,第一對script標簽中報錯是不會影響到下麵script標簽中js代碼的執行。但在第一對標簽中聲明的變數和函數是可以在第二對標簽中獲取到的。當然對於函數來說,預解析也只會將聲明的變數及子級函數提升到當前函數的內部的最上面。
<script> var numOne = 5; function num() { return 1; } console.log(num()); //1 console.log(numOne); //5 </script> <script> function num() { return 2; } console.log(num()); //2 console.log(numOne); //5 var numOne = 10; </script>