摘要:前個(gè)來(lái)源于年的博客,后個(gè)來(lái)源于年底的博客。的計(jì)時(shí)設(shè)置斷點(diǎn)老式手段全局變量利用全局變量可以在控制臺(tái)中查詢變量信息,但要記得在正式上線發(fā)布時(shí)刪除這些全局變量。
前言
好久沒(méi)寫(xiě)博客啦~這次寫(xiě)一篇輕松的內(nèi)容,JS里的16個(gè)有趣的技巧,簡(jiǎn)單總結(jié)自Tal Bereznitskey 的兩篇博客,代碼摘自原文。
Javascript Hacks for Hipsters (2013)
7 Hacks for ES6 Developers (2017)
Hacks!前9個(gè)來(lái)源于2013年的博客,后7個(gè)來(lái)源于2017年底的博客。
1.條件運(yùn)算符實(shí)現(xiàn)方法調(diào)用// Boring if (success) { obj.start(); } else { obj.stop(); } // Hipster-fun var method = (success ? "start" : "stop"); obj[method]();2.join方法實(shí)現(xiàn)字符串拼接
["milk", "coffee", "suger"].join(", "); // = "milk, coffee, suger"3.或運(yùn)算符 || 設(shè)置默認(rèn)值
var name = myName || "No name";4.與運(yùn)算符 && 代替 if 判斷
// Boring if (isThisAwesome) { alert("yes"); // it"s not } // Awesome isThisAwesome && alert("yes"); // Also cool for guarding your code var aCoolFunction = undefined; aCoolFunction && aCoolFunction(); // won"t run nor crash5.xxx標(biāo)記代替TODO標(biāo)記
快速定位未完成的內(nèi)容,因?yàn)檎G闆r下代碼不會(huì)出現(xiàn)xxx。
6.Console的 Timing 計(jì)時(shí)var a = [1,2,3,4,5,6,7,8,9,10]; console.time("testing_forward"); for (var i = 0; i < a.length; i++); console.timeEnd("testing_forward");7.Debugger 設(shè)置斷點(diǎn)
var x = 1; debugger; // Code execution stops here, happy debugging x++;8.老式Debug手段——全局變量
利用全局變量可以在控制臺(tái)中查詢變量信息,但要記得在正式上線發(fā)布時(shí)刪除這些全局變量。
var deeplyNestedFunction = function() { var private_object = { year: "2013" }; // Globalize it for debugging: pub = private_object; }; // Now from the console (Chrome dev tools, firefox tools, etc) pub.year;9.老式字符串模板
var firstName = "Tal"; var screenName = "ketacode" // Super var template = "Hi, my name is {first-name} and my twitter screen name is @{screen-name}"; var txt = template.replace("{first-name}", firstName) .replace("{screen-name}", screenName);
個(gè)人建議在ES6的時(shí)代還是優(yōu)雅地用``、${}模板字符串吧。
10.解構(gòu)實(shí)現(xiàn)變量互換let a = "world", b = "hello" [a, b] = [b, a] console.log(a) // -> hello console.log(b) // -> world11.解構(gòu)簡(jiǎn)化Async/Await語(yǔ)句
const [user, account] = await Promise.all([ fetch("/user"), fetch("/account") ])12.Console妙用
打印對(duì)象
const a = 5, b = 6, c = 7 console.log({ a, b, c }) // outputs this nice object: // { // a: 5, // b: 6, // c: 7 // }
打印表格
console.table(data [, columns]);13.單行語(yǔ)句計(jì)算數(shù)組最大值、和
// Find max value const max = (arr) => Math.max(...arr); //也是利用了解構(gòu) max([123, 321, 32]) // outputs: 321 // Sum array const sum = (arr) => arr.reduce((a, b) => (a + b), 0) sum([1, 2, 3, 4]) // output: 1014.解構(gòu)實(shí)現(xiàn)數(shù)組拼接
const one = ["a", "b", "c"] const two = ["d", "e", "f"] const three = ["g", "h", "i"] // Old way #1 const result = one.concat(two, three) // Old way #2 const result = [].concat(one, two, three) // New const result = [...one, ...two, ...three] //沒(méi)錯(cuò),又是解構(gòu)!15.解構(gòu)實(shí)現(xiàn)淺拷貝
const obj = { ...oldObj } const arr = [ ...oldArr ] // 強(qiáng)大的解構(gòu)16.使用命名變量提高解構(gòu)的可讀性
const getStuffNotBad = (id, force, verbose) => { ...do stuff } const getStuffAwesome = ({ id, name, force, verbose }) => { ...do stuff } // Somewhere else in the codebase... WTF is true, true? getStuffNotBad(150, true, true) // Somewhere else in the codebase... I ? JS!!! getStuffAwesome({ id: 150, force: true, verbose: true })The last
到此為止!
感悟:解構(gòu)(Destructuring)真的很強(qiáng)大~~~(? ?_?)?
PS: 個(gè)人github包含更多文章哦~項(xiàng)目哦~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/95053.html
摘要:前端日?qǐng)?bào)精選漸進(jìn)式動(dòng)畫(huà)解決方案從前端開(kāi)發(fā)看面向未來(lái)的敏捷學(xué)習(xí)法知乎專欄深度剖析現(xiàn)代應(yīng)用眾成翻譯譯關(guān)于你需要知道的一切構(gòu)建離線優(yōu)先的應(yīng)用知乎專欄中文為何默認(rèn)開(kāi)啟四進(jìn)程不犧牲內(nèi)存占用異步一淺出異步事件性能調(diào)優(yōu)之內(nèi)存篇二知乎專欄之性能 2017-06-16 前端日?qǐng)?bào) 精選 漸進(jìn)式動(dòng)畫(huà)解決方案從前端開(kāi)發(fā)看面向未來(lái)的敏捷學(xué)習(xí)法 - 知乎專欄深度剖析現(xiàn)代 JavaScript 應(yīng)用 — SiteP...
摘要:我不再使用了,相反的是,我將使用的條件判斷將類應(yīng)用到標(biāo)簽。但是,我想記錄我之前碰到過(guò)的每一個(gè)瀏覽器特定的選擇器和樣式屬性。我相信也沒(méi)有其他方式提供樣式表給獨(dú)特的利用這些,你能夠更好的針對(duì)和,代碼如下瀏覽器特定的綜合列表原文 我不再使用CSS Hacks了,相反的是,我將使用IE的條件判斷將類應(yīng)用到body標(biāo)簽。 但是,我想記錄我之前碰到過(guò)的每一個(gè)瀏覽器特定的CSS 選擇器和樣式屬性。...
摘要:前端日?qǐng)?bào)精選是如何工作的內(nèi)存管理如何處理個(gè)常見(jiàn)的內(nèi)存泄漏譯中的面向?qū)ο笤驮玩溊^承源碼事件機(jī)制考拉升級(jí)經(jīng)驗(yàn)掘金中文第期你知道編譯與解釋的區(qū)別嗎視頻在白鷺引擎中的實(shí)踐王澤變量自定義屬性使用指南眾成翻譯禁止手機(jī)虛擬鍵盤(pán)彈出做 2017-09-27 前端日?qǐng)?bào) 精選 JavaScript是如何工作的:內(nèi)存管理 + 如何處理4個(gè)常見(jiàn)的內(nèi)存泄漏(譯) js中的面向?qū)ο蟆⒃汀⒃玩湣⒗^承Vue....
摘要:最近一周一直都在折騰一些項(xiàng)目中常用的記錄下來(lái),以后免去簡(jiǎn)單的配置再去查文檔。常規(guī)入口指示應(yīng)該使用哪個(gè)模塊,來(lái)作為構(gòu)建其內(nèi)部依賴圖的開(kāi)始。把代碼轉(zhuǎn)換成,在使用語(yǔ)言中有介紹。擴(kuò)展語(yǔ)法,使用下一代,在使用中有介紹。用于忽略部分文件。 最近一周一直都在折騰webpack,一些項(xiàng)目中常用的記錄下來(lái),以后免去簡(jiǎn)單的配置再去查文檔。 常規(guī) 1.入口 指示 webpack 應(yīng)該使用哪個(gè)模塊,來(lái)作為構(gòu)建...
閱讀 917·2021-11-08 13:22
閱讀 2841·2021-09-29 09:45
閱讀 2824·2021-09-09 11:52
閱讀 2257·2019-08-30 13:20
閱讀 3739·2019-08-29 13:28
閱讀 1356·2019-08-29 12:32
閱讀 2720·2019-08-29 11:10
閱讀 1643·2019-08-26 13:34