日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6学习笔记--let和const

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6学习笔记--let和const 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天開始讀阮一峰的《ECMAScript 6 入門》,在這里記錄下閱讀過程中的要點,以便隨時查閱。

let和const

頂層對象的屬性與全局變量掛鉤,被認為是js最大的敗筆之一,ES6開始,全局變量將逐步與頂層對象脫鉤。為了保持兼容性,一方面,var和function聲明的全局變量,依舊是頂層對象的屬性;另一方面,let,const,class命令聲明的全局變量,不屬于頂層對象的屬性:

var a = 1; window.a;//1 let b = 2; window.b;//undefined

const 聲明一個只讀常量,一旦聲明就必須立即初始化,否則報錯;聲明之后不能修改,否則也會報錯;
const實際上保證的不是變量的值不可改動,而是變量指向的那個內存地址不得改動。使用const聲明引用類型,只能保證指針是固定的,但是指向的數據結構內的屬性和方法是可變:

const obj={}; obj.name = 'illidan'; obj.naem; // 'illidan'; obj = {}; //報錯,改變了指針的指向

let和const聲明的變量只在代碼塊內有效(代碼塊:大括號包起來的部分),在代碼塊外調用會報錯
let和const沒有變量提升,因此在它們聲明之前調用變量會報錯

console.log(foo);//undefined var foo = 'haha' console.log(a); //reference error let a = 'hehe';

let和const不允許在相同作用域內,重復聲明一個變量:

function foo1(){ //報錯var a = 1;let a = 1; } function foo2(){ //報錯let a = 1;let a = 2; } function foo3(){//報錯let a= 1;const a = 2; }

因此不能在函數內部重新聲明參數:

function foo4(arg){let arg;//報錯 } function foo5(arg){{let arg;//不報錯} }

for循環有個特別之處,循環語句是一個父作用域,循環體內是一個單獨的子作用域

for (let i = 0; i < 3; i++) {let i = 'abc';console.log(i); } //3*abc

只要塊級作用域內存在let或const,則它們聲明的變量就綁定了這個區域,不再受外部的影響,這個區域稱為暫時性死區(temporal dead zone),簡稱TDZ

var temp = 123; if(true){temp = 'abc';//reference errorlet temp; } var const = 1; if(true){const=2;//reference errorconst const=3; }

TDZ也意味著typeof不再是一個百分百安全的操作

typeof undeclared_variable //undefined typeof x;//reference error let x;

有些TDZ比較隱蔽:

function bar(x=y,y=2){return [x,y] } bar();//報錯,參數x默認等于參數y,而此時y還沒有聲明

修改之后

function bar(x=2,y=x){return[x,y]; }; bar();//[2,2]

使用let或者const聲明變量時,只有變量還在沒有聲明完成前使用,就會報錯:

var x = x;//undefined let x = x; // reference error const y = y; // reference error

總之,TDZ的本質就是,只要一進入當前作用域,所要使用的變量就已經存在了,但是不可獲取,只有等到聲明變量的那一行代碼出現,才可以獲取和使用該變量


為什么需要塊級作用域?

ES5中只有全局作用域和函數作用域,沒有塊級作用域,會帶來一些不合常理的場景:
第一種場景,內層變量可能會覆蓋外層變量

var temp = new Date(); function f(){console.log(temp);if(false){var temp = 'hello world'; //變量提升} } f();//undefined

第二種場景,用來計數的循環變量泄露為全局變量:

for(var i=0;i<10;i++){console.log(i); }; console.log(i); //10

ES6引入塊級作用域,明確允許在塊級作用域中聲明函數,行為類似于let,在塊級作用域之外不可引用

function f() { console.log('I am outside!'); }(function () {if (false) {// 重復聲明一次函數ffunction f() { console.log('I am inside!'); }}f(); }());

上面的代碼在ES5中運行,會得到'i an inside!'

// ES5 環境 function f() { console.log('I am outside!'); }(function () {function f() { console.log('I am inside!'); } //函數聲明提升if (false) {}f(); }());

ES6理論上會得到'I am outside!',但是這樣處理會對老代碼產生很大的影響,為了兼容老代碼,瀏覽器有自己的行為方式:
-允許在塊級作用域內聲明函數
-函數聲明類似于var,即函數名提升到全局作用域或塊級作用域頭部,函數體不提升
-同時,函數聲明還會提升到所在塊級作用域的頭部
因此,上面的代碼在ES6瀏覽中實際執行的是:

// 瀏覽器的 ES6 環境 function f() { console.log('I am outside!'); } (function () {var f = undefined; // 只提升變量名if (false) {function f() { console.log('I am inside!'); }}f(); }()); //f is not a function;

要避免在塊級作用域里聲明函數,如果確實需要,則要寫成函數表達式,而不是函數聲明

轉載于:https://www.cnblogs.com/azerothmemoir/p/6512453.html

總結

以上是生活随笔為你收集整理的ES6学习笔记--let和const的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱国产 | 亚洲午夜精品久久 | 国产xxxxx视频 | 完美搭档在线观看 | 日日夜夜狠狠干 | 欧美日韩久久久久久 | 艳情五月 | 无码不卡av东京热毛片 | 美女搡bbb又爽又猛又黄www | 黄色的网站在线 | 日本亚洲色大成网站www久久 | 国产一区二区不卡视频 | 制中文字幕音影 | 91黄在线观看 | 美女脱裤子打屁股 | 黄色精品一区 | 貂蝉被到爽流白浆在线观看 | 草逼网站| 精品欧美在线观看 | 精品久久久久久无码人妻 | 性色av无码久久一区二区三区 | 亚洲大色| 91精品国产99久久久久久 | 亚洲精品在线观看av | 黄色av高清 | 乖疼润滑双性初h | 国产精品久久婷婷六月丁香 | 欧美精品久久久久性色 | 无限资源日本好片 | 国产成人三级在线观看视频 | 久久精品免费播放 | 麻豆av一区二区三区在线观看 | av资源站最新av| 久久激情久久 | 精品三级av | 亚洲精品88 | 日日射日日操 | 26uuu精品一区二区在线观看 | 日韩黄网站 | 欧美三级小视频 | 久久综合第一页 | 久久在线免费视频 | 男女爱爱福利视频 | 免费看a级片 | 精品一区在线视频 | av动漫免费观看 | 欧美综合久久久 | 91福利一区 | 淫僧荡尼巨乳(h)小说 | 毛片aaaaa | 999热精品视频 | 亚洲综合一区二区三区 | 免费黄色大片 | 中文字幕15页 | 色综合一区二区三区 | 久久成人精品视频 | 深夜福利网址 | www.久久99 | 免费在线毛片 | 岛国片在线免费观看 | 色综合中文字幕 | 日本中文字幕成人 | 天天干天天摸天天操 | av电影一区二区 | 污网站免费看 | 寂寞d奶大胸少妇 | 狠狠干夜夜爽 | 欧美精品久久久久 | 九色精品| 人妻与黑人一区二区三区 | 欧美高跟鞋交xxxxxhd | 精品久久精品久久 | 日本熟女毛茸茸 | 三级影片在线播放 | 日韩深夜福利 | 天天色天天操天天射 | 超碰在| 女人一区二区 | 草色噜噜噜av在线观看香蕉 | 性少妇bbw张开 | 欧洲高潮三级做爰 | 手机看片日韩国产 | 成人片在线视频 | 久9精品| 国产良妇出轨视频在线观看 | 精产国品一区二区 | 国产精品天美传媒 | 国产精品丝袜黑色高跟 | 亚洲色图丝袜美腿 | 亚洲一线在线观看 | 国产精品无遮挡 | 一区二区成人在线 | 四川丰满少妇被弄到高潮 | 欧美国产精品一区二区三区 | 91成人在线观看喷潮蘑菇 | 女人被男人躁得好爽免费视频 | 亚洲综合在线第一页 | 9色视频在线观看 | 女生抠逼视频 |