js作用域為「函式級作用域」,記住最簡明的一句「函式中宣告的所有變數,無論是在**宣告的,在整個函式中它們都是有定義的。」
下面是自己的筆記
(1)首先,只是在這個函式中有定義,也就是說,在輸出語句後定義和輸出語句前定義是一樣的結果,最後變數的值都是「undefined」,下面兩種寫法結果一樣;
function local()
function local()
如果涉及到變數賦值,下面兩個效果就不一樣
function local_1()
function local_2()
(2)另乙個「無塊級作用域」示例
function local()
document.write("");
document.write(i);
/*輸出
012----------3*/
}顯然,變數i在for迴圈中定義,但離開for這個程式塊,它仍舊可以使用,原因就是它還是在local這個函式中。
(3)關於全域性變數,和c等差不多了,簡單放個例子
var global = "global";
function local_1()
function local_2()
function local_3()
摘自:
js塊級作用域
首先看乙個常見的函式,該函式輸出的是什麼呢?對的,就是5個6.為什麼會這樣呢?因為settimeout是個非同步函式,每次迴圈的時候都會建立乙個定時器,任務放到佇列裡,等主線程執行完才會執行定時器,這個時候迴圈跑完了,最後一次的 i 5 1 6,所以輸出5個6.for var i 1 i 5 i 1...
js塊級作用域
在了解這兩個api前,我們先了解一下塊級作用域這個概念。定義 是乙個語句,將多個操作封裝在一起,通常是放在乙個大括號裡,沒有返回值。為何需要塊級作用域?在es6之前,函式只能在全域性作用域和函式作用域中宣告,不能在塊級作用域中宣告。沒有塊級作用域導致很多場景不合理 1 記憶體變數可能覆蓋外層變數 v...
塊級作用域
跨級作用域本身沒有宣告可以說的,就需要注意兩點 1.跨級作用域內宣告的var變數並不會存在這個塊級作用域內,而是會提公升到非塊級作用域內 2.在塊級作用域內宣告function,在不同瀏覽器會有不同結果,如果是根據條件宣告function的話,請用var func function的形象 但是為什麼...