成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自從知道了這幾個 JavaScript 技巧,下班都變早了!

開發 前端
誰要是說 JavaScript 是世界上比較好的語言,估計會被唾沫星子淹沒。但是如果說 JavaScript 是世界上應用很廣泛的編程語言,估計大部分人都沒意見。尤其是有了 NodeJS 之后,JavaScript 更是無孔不入。

 誰要是說 JavaScript 是世界上比較好的語言,估計會被唾沫星子淹沒。但是如果說 JavaScript 是世界上應用很廣泛的編程語言,估計大部分人都沒意見。尤其是有了 NodeJS 之后,JavaScript 更是無孔不入。

[[330053]]

Atwood 定律:“任何可以使用 JavaScript 來編寫的應用,最終會由 JavaScript 編寫。”

即便如此,JavaScript 還是有一些鮮為人知的特性和技巧,不太常見,但是非常有用。本文不打算介紹那些稀奇古怪的特性,因為除了作為茶余飯后的談資,沒什么卵用實際用途。本文要介紹的這 5 個技巧,學完即用,用完即走(下班)!

1.加號操作符+

確定沒搞錯?我小學一年級的侄子都知道啊!沒錯,基本的算術運算符+你肯定知道:

 

  1. const two = 1 + 1; 

但這里說的不是數字相加,而是將將表達式轉換成數字的操作符。

 

  1. console.log(+new Date()); // 1592102280555 
  2. console.log(+true); // 1 
  3. console.log(+false); // 0 
  4. const random = { 
  5.   valueOf: () => Math.floor(Math.random() * 100), 
  6. }; 
  7. console.log(+random); // 4 
  8. console.log(+random); // 26 
  9. console.log(+random); // 47 

剛接觸 JavaScript 的新手可能覺得這種寫法有點奇怪,數字類型轉換會傾向于用Number()函數。結果是一樣的,但是用+不是簡潔多了?另外值得說明的是,如果對象上包含valueOf方法,+操作符會返回這個方法的結果。比如上面的例子。

2.debugger 語句

在瀏覽器 DevTools 上打斷點調試,基本上人人都會。但是你知道怎么在代碼里標記斷點嗎?沒錯,就是用debugger語句。當你想快速斷點到某個指定代碼位置時,這個技巧就比較方便了。

 

  1. const bubbleSort = (arr) => { 
  2.   const length = arr.length; 
  3.   for (let i = 0; i < length; i++) { 
  4.     for (let j = 0; j < length - i - 1; j++) { 
  5.       if (arr[j] > arr[j + 1]) { 
  6.         debugger; 
  7.         [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; 
  8.       } 
  9.     } 
  10.   } 
  11.   return arr; 
  12. }; 
  13. console.log(bubbleSort([8, 2, 19, 8, 4, 5, 2])); // 2, 2, 4, 5, 8, 8, 19 

 

debugger

 

 

3.逗號操作符

逗號?我看你是逗我吧!真沒逗你,這里說的逗號不是數組里的逗號,或者對象屬性之間的逗號,而是表達式里的逗號操作符。比如const a = (1, 2),a的值就是 2。逗號操作符讓多個表達式按順序執行,并返回最后一個表達式的值。這有什么用呢?可以讓代碼更簡潔。比如:

  1. let money = 10; 
  2. const hasStudied = false
  3. const relax = () => console.log('relax'); 
  4. const study = () => console.log('study'); 
  5. // 既完成變量賦值,又執行了方法 
  6. hasStudied ? (money++, relax()) : ((money /= 2), study()); 
  7. console.log(money); // study 5 
  8.  
  9. // 批量定義多個變量 
  10. for (let i = 1, j = 2; i + j < 10; i++, j++) { 
  11.   console.log(i, j); 
  12. // 1 2; 2 3; 3 4; 4 5; 
  13.  
  14. // 不改變現有方法實現的情況下,增加邏輯 
  15. <button @click="visible = false, onConfirm()">確 定<button> 

 

4.集合對象 Set

這是 ES6 引入的數據結構,集合類型 Set。學過數學的都知道,集合的特性是不包含重復元素。有一道很常見的面試題,就是數組去重問題。當然,面試題的本意可能不是讓你直接用 Set,而是自己實現去重的邏輯。但是在實際工作中用來去重,它不香嗎?還可以用來計算兩個集合的交集:

 

  1. // 數組去重 
  2. const arr = [1, 1, 7, 5, 6, 6, 6, 8, 7]; 
  3. // 傳統方式 
  4. let noDup = arr.filter((a, b) => arr.indexOf(a) === b); 
  5. // 用 Set 更方便 
  6. noDup = [...new Set(arr)]; 
  7. console.log(noDup); // 1 7 5 6 8 
  8.  
  9. // 集合操作 
  10. let a = new Set('hello world!'); 
  11. // "h""e""l""o"" ""w""r""d""!" 
  12. let b = new Set('jianshu is cool!'); 
  13. // "j""i""a""n""s""h""u"" ""c""o""l""!" 
  14. // 交集 
  15. const intersection = (a, b) => { 
  16.   let intersection = new Set(); 
  17.   for (let elem of b) { 
  18.     if (a.has(elem)) { 
  19.       intersection.add(elem); 
  20.     } 
  21.   } 
  22.   return intersection; 
  23. }; 
  24. console.log(intersection(a, b)); 
  25. // "h"" ""o""l""!" 

5.原生 Date 操作

我碰到很多前端開發,凡是日期操作必用 moment.js 之類的庫。不是說不能用,但是如果只是少數地方用了少數幾個 API,比如簡單的格式化,有必要引入一個庫嗎?再說了,如果碰到一些自定義需求,API 不支持怎么辦?其實原生操作并沒有你想象的那么麻煩,了解原理和邏輯后很快就可以自己寫一個。比如格式化:

 

  1. function formatDate(date, format) { 
  2.     var calendar = ['January''February''March''April''May''June''July''August''September''October''November''December']; 
  3.     format = format || 'Y-m-d'
  4.     var dateObj = new Date(date); 
  5.     if(isNaN(+dateObj)) { 
  6.         return 'Invalid Date'
  7.     } 
  8.     var year = dateObj.getFullYear(), 
  9.         month = dateObj.getMonth() + 1, 
  10.         date = dateObj.getDate(); 
  11.     return format.replace('Y'year).replace('m'month).replace('d'date).replace('M', calendar[month - 1]); 

也就幾行代碼的事!再比如,獲取上個月的最后一天,可能 moment.js 有相關的 API,我也懶得去查了,原生也很簡單:

 

  1. const day1 = new Date(); 
  2. day1.setDate(-1); // 難以置信,就這么簡單! 

總結

沒啥好總結的,干就完了!

責任編輯:華軒 來源: 1024譯站
相關推薦

2021-08-10 23:09:55

區塊鏈數據技術

2020-02-03 09:29:32

JavaScript代碼斷點

2018-05-20 11:01:47

Siri語音助手手機

2023-04-07 00:05:30

WebGPUAPIJavaScript

2023-04-10 15:01:38

CSS開發

2019-02-28 20:20:43

Python技巧編程語言

2021-03-14 15:58:26

手機定位系統

2019-12-02 08:27:43

Dubbo高并發分布式

2016-09-27 19:53:25

IOS 10蘋果

2022-07-01 13:38:48

霧計算邊緣計算

2020-07-20 10:20:30

this前端代碼

2024-04-18 10:23:35

裝飾器Python

2019-06-05 15:20:00

MongoDBNoSQL數據庫

2023-07-27 08:40:45

PawSQL數據庫

2020-02-23 23:29:07

Python編程開發

2021-08-29 23:40:51

手機華為功能

2018-09-20 17:05:01

前端程序員JavaScript

2024-08-30 08:12:17

開源微信小程序

2018-06-15 09:23:23

iOS安卓系統

2022-09-15 07:05:09

Windows電腦技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区三区四区视频 | 亚洲国产精品一区二区三区 | 国产成人免费网站 | 精品国产乱码一区二区三区a | 成人教育av| 欧美在线视频二区 | 亚洲综合视频 | 亚洲激情在线视频 | 日韩欧美国产精品 | 亚洲免费视频在线观看 | a级免费视频| 亚洲第一福利网 | 日韩电影免费在线观看中文字幕 | 欧美精品在欧美一区二区少妇 | 日日操视频 | 秋霞影院一区二区 | 嫩草视频网站 | 午夜爽爽爽男女免费观看 | 亚洲人在线| 欧美中国少妇xxx性高请视频 | 午夜精品一区二区三区在线观看 | 国产视频第一页 | 一区二区三区久久 | 一区二区三区亚洲视频 | 日韩欧美网 | 一本一道久久a久久精品蜜桃 | 欧美日韩91| 欧美精品成人一区二区三区四区 | 黄色网页在线 | 99re在线视频 | 色综合美女 | 超碰日本 | 国产成人在线一区二区 | 久综合| 浴室洗澡偷拍一区二区 | 99精品视频一区二区三区 | 亚州春色| 亚洲色图综合 | 国产精品免费在线 | 精品99在线 | 亚洲中午字幕 |