我們在宣告變數的時候,會把變數的宣告提到當前作用域的最上方,賦值還是在**原來的位置賦值。
console.
log(x)
;//undefined
var x=10;
console.
log(x)
;//10
上面的**相當於是
var x;
console.log(x);
x=10;
console.log(x);
把x的宣告提公升到最上方,所以第乙個列印undefined,第二個列印10
functionf(
)varx=
function()
第一種是函式式的宣告,函式的宣告和賦值都會提到當前作用域的最上方,第二種是函式字面量式的宣告,和普通的變數一樣,宣告會提到當前最用域的最上方,賦值還是在原來的位置賦值。
f()
;//1
varf
=function()
functionf(
)f()
;//2
上面的**相當於
function f()
f();
f = function ()
f();
var的變數f會被提公升到最上面,函式式定義的f會覆蓋變數f,所以第乙個列印1,第二個列印2
js中變數提公升
js初學者,如果之前接觸的有其他程式語言的經驗,往往容易被js 的執行結果,感覺到莫名其妙,其實很多時候,不太了解,其中的變數提公升的原理。如下 所示 console.log a 輸出函式體 var a 15 function a console.log a 15如果沒有接觸過js,肯定想不明白是怎...
js 中的變數提公升
我們知道當區域性變數和全域性變數同名時,區域性變數會覆蓋全域性變數。但我們看一段js var scope 全域性變數 functionf f 全域性變數 在全域性範圍 不再函式內 定義的變數 不管是否使用var 不使用var定義的變數都是全域性變數 js中沒有塊範圍指的是 在函式內無論在js中 定義...
js中的變數提公升和函式提公升
一,變數提公升 顧名思義,變數提公升就是函式在執行時,會把在下面的變數提公升到函式的top位置,來看栗子 var scope hello function t t 此時輸出的結果是 第乙個輸出undefined 根據作用域鏈,函式內部訪問乙個變數時,會首先在作用域鏈的前端也就是函式內部尋找變數,找到...