JS變數提公升簡介

2021-08-28 18:17:20 字數 878 閱讀 5376

該篇介紹什麼是變數提公升,寫給像我一樣的js新手看的

簡單來說變數提公升就是 js會把var變數的宣告自動提公升到作用域的頂部,即使你不想這樣

乙個例子: (區域性變數與全域性變數同名時 , 區域性變數覆蓋全域性變數)

var a="全域性變數";

function test()

test();

上例的兩個輸出結果

undefined區域性變數

第乙個輸出並沒有輸出全域性變數a而是undefined ,這就是變數提公升導致的

上例等同與下例:

var a="全域性變數";

function test()

test();

test函式內即使區域性變數a還沒定義,就已經覆蓋了全域性變數,可見其宣告已經生效了,

即變數宣告會自動提公升到作用域的頂部, 即使該語句並沒執行

如下例:

var x=100;

var y=200;

function test()

return;

var y=2;

}test();

輸出結果:

undefinedundefined

等同如下形式:

var x=100;

var y=200;

function test()

return;

y=2;

}test();

那麼怎麼解決這個問題呢?

用let變數!let變數執行到定義部分才會裝載,具體用法請自行查詢!

js變數提公升

在了解變數提公升之前,應該先了解一下js到底是一種什麼型別的語言,他的執行機制又是怎樣的.console.log global undefined var global global console.log global global function fn fn 可以看出來 變數提公升只是將變數提...

js變數提公升

var a 100 functionf console.log a f undefined 200var a 100 functionf f console.log a 100如果你習慣了強型別語言的程式設計方式,那麼看到上述輸出結果你肯定會大吃一驚。我們來看一下c 的乙個例子 include us...

JS變數提公升

在當前作用域中,js 自上而下執行之前,瀏覽器首先會把所有的帶var function關鍵字的進行提前宣告 定義。注意宣告和定義的區別 宣告 declare var num 在當前作用域中吼一嗓子我有num這個名字了。定義 define num 12 把宣告的名字賦值。console.log a u...