国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

淺談讓你的代碼更簡短,更整潔,更易讀的ES6小技巧

2024-05-06 15:28:28
字體:
來源:轉載
供稿:網友

寫在文章前面

這篇文章翻譯自ES6 tips and tricks to make your code cleaner, shorter, and easier to read!. 文章就代碼整潔方面對es6進行了總結。如有錯誤歡迎指出。

template literals 模板字符串

模板字符串使字符串的使用變得比以前更簡單了,他們以反引號開始(`),并且能過使用${變量}來插入變量。我們來比較一下下面兩行代碼。

var fName = 'Peter', sName = 'Smith', age = 43, job= 'photographer';var a = 'Hi, I/'m ' + fName + ' ' + sName + ', I/'m ' + age + ' and work as a ' + job + '.';var b = `Hi, I'm ${ fName } ${ sName }, I'm ${ age } and work as a ${ job }.`;

一切都變得很美好了是不是,代碼更易讀了是不是?你可以在大括號內放入任何東西:變量,等式,或者函數的調用。 我將會在后面的整個文章的示例中使用這些方式。

塊級作用域語法

JavaScript是使用函數作用域的,這就是為什么我們是為什么我們越來越頻繁的使用匿名的立即執行函數表達式(iife)來實現整個JavaScript文件的封裝。我們這么做是為了把所有的變量隔離在文件內從而避免變量沖突。
現在我們有了塊級作用域和兩個嶄新的塊級作用域的變量聲明

let declaration let命令

這個命令和var很相似但卻又有著顯著的不同。因為他是有塊級作用域的,聲明一個相同名字的新變量可以完全不影響外部的變量。

var a = 'car' ;{  let a = 5;  console.log(a) // 5}console.log(a) // car

因為他是被限制在塊級作用域的,他解決了那道非常經典的面試題:“下面這個代碼的輸出是什么,如何修改讓他運行之后成為你想的那個樣子?”

for (var i = 1; i < 5; i++){  setTimeout(() => { console.log(i); }, 1000);}

這個例子中,輸出是“5 5 5 5 5”因為變量i在每次迭代中都會改變。

如果我們把var變為let,一切都變了。 現在,每次循環都會創建一個全新的塊級作用域吧i限制在當前的循環,他可以理解為這樣:

{let i = 1; setTimeout(() => { console.log(i) }, 1000)} {let i = 2; setTimeout(() => { console.log(i) }, 1000)} {let i = 3; setTimeout(() => { console.log(i) }, 1000)} {let i = 4; setTimeout(() => { console.log(i) }, 1000)} {let i = 5; setTimeout(() => { console.log(i) }, 1000)} 

var 和 let的另外一個區別是 let 不會像 var一樣被變量提升

{   console.log(a); // undefined  console.log(b); // ReferenceError  var a = 'car';  let b = 5;}

因為他有更為局限的作用域,以及更能被預測的行為,因此一些人甚至認為你應該使用let來代替var, 除非當你真的特別需要變量提升或者更寬松的作用域范圍,你再使用var

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 来安县| 赣榆县| 宜川县| 毕节市| 包头市| 稻城县| 南靖县| 茶陵县| 邹城市| 凤冈县| 莫力| 维西| 蓝田县| 师宗县| 怀柔区| 成武县| 从化市| 原平市| 阜新市| 额尔古纳市| 建平县| 毕节市| 二手房| 攀枝花市| 阿拉善右旗| 顺义区| 河东区| 怀柔区| 容城县| 门源| 黎城县| 六安市| 青浦区| 柏乡县| 台南市| 保靖县| 阿瓦提县| 双辽市| 鲜城| 班玛县| 临洮县|