<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
JavaScript中一共有3種用來宣告變數的關鍵字,分別是var、let和const。
其中var關鍵字是ES5時代的產物,由於ES5對變數的約束很寬鬆,使用var來宣告變數時經常會出現一些預料之外的問題。 ES6為了使變數的定義更加規範,提出了let和const這兩個關鍵字。
因此要解釋清楚這三個的區別,首先要從ES5時代和ES6時代的差別說起,主要是var和let的區別。
使用不同的關鍵字來宣告變數,主要就是對變數的作用域有不同的限制,因此var和let最主要的區別就是變數作用域的區別。
做題的時候經常會有在全域性和函數體內宣告同名變數的場景,要知道不同作用域的變數是不會互相干擾的。
var a = 10; function logA() { var a = 20; console.log(a); // 20 } console.log(a); // 10
{...}
來限定塊級作用域。在全域性作用域下使用var和let宣告變數,變數都是會在頁面的宣告週期記憶體續。
但是使用var宣告的變數會成為window物件的屬性,使用let宣告則不會。
變數的宣告、初始化和賦值被分為三步進行,對於var變數,宣告和初始化會被提升到作用域的頂部。
也就是說,編譯器在遇到var宣告時,會先在作用域頂部宣告一個var變數並將其初始化為undefined值。
因此在程式碼執行流遇到var宣告語句之前存取var變數並不會報錯,而是會存取到undefined值。
(function example() { console.log(age); // undefined var age = 20; })(); // 相當於 (function example() { var age; console.log(age); // undefined age = 20; })();
即JavaScript引擎在編譯時如果遇到let和const宣告,會將它們放入暫時性死區以阻止存取,只有在執行到變數宣告的語句後,才會將變數從TDZ中移出。
因此如果在變數宣告語句之前存取變數,相當於企圖存取TDZ中的變數,JavaScript會丟擲執行時錯誤ReferenceError
。
ES5的變數提升和ES6的暫時性死區的區別還有一個“副作用”就是改變了
typeof
操作對於變數的存取性。已知在ES5時對於未宣告變數唯一的安全操作是
typeof
,會返回undefined值。TDZ的出現導致即使使用
typeof
,也不能在let和const宣告語句執行之前存取let和const變數,依然會報ReferenceError
。
SyntaxError
錯誤。這個限制不僅體現在let宣告對let宣告,如果想用let去重複宣告var變數也是不被允許的。
同樣都是ES6的變數宣告關鍵字,let和const的區別就在於使用const宣告建立的是一個值的唯讀參照。
唯讀參照意味著對於原始值來說,const宣告不可以再重新賦值;
對於參照值來說,const宣告不可以再修改參照,但是可以修改物件的屬性值或者陣列內部的值。
到此這篇關於JavaScript變數中var,let和const的區別的文章就介紹到這了,更多相關JS var,let,const內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45