js變數提公升機制下重名的問題

2021-09-24 18:52:56 字數 472 閱讀 4797

帶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 區...