摘要:和的區別作用域是函數體的全部聲明變量提升循環內變量過度共享循環本身及三次回調均共享唯一的變量。
let、const和var的區別
var : 作用域是函數體的全部,聲明變量提升
console.log(num);//undefined var num = 2 //循環內變量過度共享 for (var i = 0; i < 4; i++) { alert(i);//0,1,2,3 } for (var i = 0; i < 4; i++) { setTimeout(function () { alert(i)//4,4,4,4 }, i * 100); }
循環本身及三次timeout回調均共享唯一的變量i。當循環結束執行時,i的值為4,此時回調尚未被觸發.
所以當第一個timeout執行時,調用alert(i),此時i的值為4,所以最終彈出來的是4.
let聲明的變量擁有塊級作用域,聲明的全局變量不是全局對象的屬性,聲明的變量直到控制流到達該變量被定義的代碼行時才會被裝載,用let重定義變量會拋出一個語法錯誤
var j = 100; for (let i = 0; i < 4; i++) { console.log(j)//not defined,暫時性死去,即使在該作用域外已經存在這個變量,如果作用域內需要使用 let、 const 再次聲明,則必須提前,否則無法使用,直到聲明后才可以使用 setTimeout(function () { alert(i)//0、1、2、3,塊級作用域 }, i * 100); let j = 0; //let j = 2;//SyntaxError,重定義變量會拋出一個語法錯誤 console.log(j)//0,0,0,0 } window.i//undefined,不是全局對象的屬性
const聲明的變量與let聲明的變量類似,它們的不同之處在于,const聲明的變量只可以在聲明時賦值,不可隨意修改,否則會導致SyntaxError(語法錯誤).
const num = 1; num = 2;// Assignment to constant variable
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97893.html
摘要:用聲明的變量,其可用范圍在當前執行上下文。在函數外聲明的變量,其作用范圍是全局。拋出語法錯誤錯誤信息未捕獲的異常標識符已經被聲明過。例如輸出照例,命名規范指出我們應該用大寫字母聲明常量。為了讓代碼長期可維護,命名規范還是值得遵守的。 轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。原文出處:https://dzone.com/articles/...
摘要:變量常量綁定無特定關鍵字直接設值將一個文字列放到名為的變量里的類型由文字列上面定義的正則表達式變成了整數這里就帶來一個在大工程里很容易帶來困擾的問題理解代碼不得不受制于類型極易變的變量要理解代碼所必需的工作量極大可變變量前綴將變量與 變量(常量)綁定 python無特定關鍵字,直接設值a = r^s*(d{4}-d{2}-d{2})s{1,2}(.+)$ # 將一個文字列放到名為a的...
摘要:和都能夠聲明塊級作用域,用法和是類似的,的特點是不會變量提升,而是被鎖在當前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時死區臨時死區的意思是在當前作用域的塊內,在聲明變量前的區域叫做臨時死區。 主要知識點有:var變量提升、let聲明、const聲明、let和const的比較、塊級綁定的應用場景showImg(https://segmentfault.com/img...
摘要:沒有聲明的情況和都能夠聲明塊級作用域,用法和是類似的,的特點是不會變量提升,而是被鎖在當前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時死區的意思是在當前作用域的塊內,在聲明變量前的區域叫做臨時死區。 本章涉及3個知識點,var、let、const,現在讓我們了解3個關鍵字的特性和使用方法。 var JavaScript中,我們通常說的作用域是函數作用域,使用var聲...
閱讀 2521·2023-04-26 02:57
閱讀 1403·2023-04-25 21:40
閱讀 2155·2021-11-24 09:39
閱讀 3557·2021-08-30 09:49
閱讀 760·2019-08-30 15:54
閱讀 1166·2019-08-30 15:52
閱讀 2069·2019-08-30 15:44
閱讀 1274·2019-08-28 18:27