1 1 塊級作用域

2021-09-16 22:39:39 字數 970 閱讀 3454

//if裡面的變數提公升,導致內層的tmp變數覆蓋了外層的tmp變數,console是在賦值前執行,導致輸出undefined

//不管判斷語句是否執行,在預解析的時候都會提前變數的宣告

var tmp =

newdate()

;functionf(

)}f(

);// undefined

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

--//變數i只用來控制迴圈,但是迴圈結束後,它並沒有消失,洩露成了全域性變數

var s =

'hello'

;for

(var i =

0; i < s.length; i++

)console.

log(i)

;// 5

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

--//在塊級作用域內宣告函式相當於var乙個變數,會提公升宣告和作用域

//如果把判斷語句刪除,會輸出i am outside!

functionf(

)(function()

}f()

;// uncaught typeerror: f is not a function}(

));

塊級作用域

跨級作用域本身沒有宣告可以說的,就需要注意兩點 1.跨級作用域內宣告的var變數並不會存在這個塊級作用域內,而是會提公升到非塊級作用域內 2.在塊級作用域內宣告function,在不同瀏覽器會有不同結果,如果是根據條件宣告function的話,請用var func function的形象 但是為什麼...

全域性作用域 塊級作用域

瀏覽器環境有一頂層物件window,window的屬性和var的全域性變數等價。如果用var設定了window物件的內建屬性作為變數,內建屬性值將會被覆蓋。如果是window物件的內建屬性,輸出預設值 非內建則輸出underfined。console.log window.name window.n...

js塊級作用域

首先看乙個常見的函式,該函式輸出的是什麼呢?對的,就是5個6.為什麼會這樣呢?因為settimeout是個非同步函式,每次迴圈的時候都會建立乙個定時器,任務放到佇列裡,等主線程執行完才會執行定時器,這個時候迴圈跑完了,最後一次的 i 5 1 6,所以輸出5個6.for var i 1 i 5 i 1...