帶var 和 function 關鍵字宣告相同的名字,這也算重名了(其實是乙個fn,只是儲存值得型別不一樣)
fn();//4
function fn ()
fn();//4
function fn ()
fn();//4
var fn=100;
//帶var 的在提公升階段只把宣告處理了,賦值操作沒有處理,所以在**執行的時候需要完成賦值 fn=100
fn();// uncaught typeerror: fn is not a function
function fn ()
fn();
function fn ()
fn();
最終結果輸出 4 4 4 報錯
這也就說明重名 如果名字重複 ,不會重新的宣告,但是會重新的定義(重新賦值)[不管是變數提公升還是**執行階段皆是如此]
js變數提公升機制
宣告 declare var a function sum 預設值undefined 定義 defined a 12 定義其實就是賦值操作 變數提公升階段 帶 var 的只宣告未定義 帶 function 的宣告 和賦值都完成了。變數提公升只發生在當前作用域 例如 開始載入頁面的時候,只對全域性作用...
關於js的各種變數提公升機制
js中,傳統宣告變數是var function es6中是let const import。今天說一下前四種的異同。let 和 const letconst都是宣告乙個變數,但是const宣告的變數不允許指標重新指向,且const宣告的時候必須賦值,否則會報錯。變數賦值本質上就是乙個指標指向的過程。...
js提公升機制(hoisting)
這是我申請寫的第一篇文章,想把這兩天學習的關於js的變數和函式提公升機制 hoisting 記錄下來。從網上看到這麼一段 varc 2 functionc a 10 這可不是對外面的全域性變數a定義哦 console.log a 10 區域性變數 vara 11 console.log a 11 區...