作用域
1、作用域:全局作用域,局部作用域罐孝。
2媳友、根據(jù)作用域不用,變量有全局變量,局部變量乞旦。(如果在函數(shù)內(nèi)部沒有聲名直接賦值的變量也屬于局部變量贼穆。函數(shù)的形參也可以看作是全局變量)。全局變量瀏覽器關閉才銷毀兰粉,局部變量節(jié)約資源故痊。
3、js沒有塊級作用域玖姑, 在es6才有愕秫,用{}包括
4、作用域鏈:內(nèi)部函數(shù)訪問外部函數(shù)變量焰络,采取的是鏈式查找的方式取值戴甩,這種結構成為作用域鏈。
預解析
1闪彼、js引擎運行js:js代碼是由瀏覽器中js解析器執(zhí)行的甜孤。js解析器在運行js代碼的時候分兩步:預解析和代碼執(zhí)行。
(1)預解析:js引擎會把js里面的所有var 還有function提升到當前作用域的最前面
(2)代碼從上往下執(zhí)行
2畏腕、預解析:變量預解析缴川、函數(shù)預解析。也就是變量提升和函數(shù)提升描馅。
(1)變量提升就是把所有的變量聲名提升到當前作用域的最前面 不提升賦值操作二跋。
(2)函數(shù)提升就是把所有的函數(shù)聲名提升到當前作用域的最前面,不調(diào)用函數(shù)
3流昏、案例
f1();
console.log(c); // 9
console.log(b); // 9
console.log(a); // 報錯
function f1(){
var a=b=c=9; // 相當于 var a=9; b=9; c=9;(b,c沒有var 等于全局作用域扎即,全局變量)
console.log(a); // 9
console.log(b);// 9
console.log(c);// 9
}