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

JavaScript 有趣的冷知識: 標(biāo)簽?zāi)0?tagged template)

開發(fā) 前端
styled-components 是一個用來產(chǎn)生元素樣式的組件,讓你可以在 JSX 中編寫 css 達(dá)到** CSS-IN-JS** 的技巧。

不曉得大家在利用 React.js 開發(fā)網(wǎng)頁的時候有沒有用過一個很好用的組件叫 styled-components,styled-components 是一個用來產(chǎn)生元素樣式的組件,讓你可以在 JSX 中編寫 css 達(dá)到** CSS-IN-JS** 的技巧,講了這么多就是因為 styled-component 的官方文件有說了這句話:

This unusual backtick syntax is a new JavaScript feature called a tagged template literal.

這個 tagged template literal 讓我有點好奇了,因為之前在使用 styled-components 的時候有發(fā)現(xiàn)明明要產(chǎn)生元素的 method 都是 function,可是在 styled-compoents 中卻看不到任何 "平常" 會使用的 call function 技巧,后來仔細(xì)去看了 MDN 才知道原來這個是 ES6 新進(jìn)的方法,而我直到現(xiàn)在才知道,只能說自己認(rèn)識的 ES6 真的太少了。

Template Strings

在開始講 tagged template literal 時,必須要先講一下 template strings,相信有在使用 ES6 的人都知道 template strings 是非常好用的方法,解決了以往組合字串上需要用冗長的加號不斷的拼接。

// ES5
var myName = '前端小智'
console.log("Hello " + myName + '!')
// 'Hello 前端小智!'

// ES6
const myName = '前端小智'
console.log(`Hello ${myName}`)
// 'Hello 前端小智!'

甚至 template strings 也可以利用 multi-line 的效果進(jìn)而達(dá)到換行的效果。

// ES5
console.log('Hello\n' + '前端小智')
// Hello
// 前端小智
// Es6
console.log(`
Hello
前端小智
`)
// Hello
// 前端小智

看到上面的multi-line 寫法有沒有瞬間覺得跟在寫styled-components 很像呢

其實 template strings 的寫法跟接下來要講的 tagged template literal 可以說是息息相關(guān),這也是為甚麼要前必須要先提到 tagged template literal 的原因。

Tagged Template Literal

tagged template literal 簡單來說就是讓你可以用另一種方式進(jìn)行 function call,通常我們認(rèn)知的 function call 都是利用小括號的方式進(jìn)行,并且在小括號中傳入要讓此 function 使用的參數(shù),但 tagged template literal 可以讓你利用 template 的技巧進(jìn)行 function call,寫法就跟上面介紹的 template strings 可以說是一模一樣。

在上面的例子可以看到輸出的格式有點奇怪,竟然是個數(shù)組而不是單純的字符串而已,這是因為 JavaScript 要把 template string 記錄起來,這樣才能把 template string 中的變量抓出來,畢竟 function call 最重要的就是要把參數(shù)傳進(jìn)去。

知道了該特點后,接下來我們嘗試用這種方式傳參數(shù)進(jìn)去 function 內(nèi),就像下面這樣。

沒想到還是沒辦法把完整的字串顯示出來,其實利用 tagged template literal 的方式進(jìn)行 function call 時,第一個參數(shù)是 template strings 中的 raw strings 也就是除了變量以外的其他字串的集合,會是一個數(shù)組,其余的參數(shù)則是會根據(jù) template strings 中帶入的變量一一的列舉出來。

舉例來說:假如在 template strings 中一共傳入了兩個變數(shù),則這兩個變量都會被當(dāng)作此 function 中的第二及第三個參數(shù)帶入,事例如下。

但這樣寫真的是很丑,而且你很難預(yù)期這個在這個 template strings 中一共會傳多少個變量進(jìn)去,這時候如果要讓這個 function 寫起來比較好看可以用 ES6 的 rest parameter 的方式,只是會把變量都變成數(shù)組,所以要使用變量時要記得解構(gòu)出來,事例如下:

總結(jié)這次介紹了一種不同的 function call 方式,希望大家有所收藏。

責(zé)任編輯:姜華 來源: 大遷世界
相關(guān)推薦

2025-02-25 13:00:00

JavaScript開發(fā)前端

2014-01-22 09:46:42

JavaScript數(shù)組

2016-12-21 09:35:55

JavaScript原生數(shù)組函數(shù)

2013-09-22 15:43:27

扁平化UI設(shè)計

2024-02-21 14:55:19

C++語言編程

2019-12-03 19:09:19

JavaScriptNumbers阿里云計算

2011-07-11 10:16:07

JavaScript

2012-07-11 08:51:51

設(shè)計模式

2023-10-30 08:45:55

Spring容器攔截

2022-06-01 07:38:23

displaycontentsCSS

2023-12-27 08:24:05

射頻天線電波

2024-08-20 10:15:14

2016-12-05 15:15:52

JavaScriptCSS庫

2017-05-08 14:35:14

JavascriptBOOM動畫效果

2023-08-13 16:32:12

JavaScript

2011-08-31 10:18:09

Template St

2021-03-19 18:13:21

手機(jī)內(nèi)存軟件

2014-12-01 09:54:40

JavaScript

2022-03-28 18:48:42

人工智能AI

2009-07-07 17:43:33

JSP系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩精品1区2区 | 亚洲国产精品一区二区三区 | 99久久婷婷国产综合精品电影 | 亚洲一区二区三区免费 | 日本久久www成人免 成人久久久久 | 日操操 | 亚洲 欧美 激情 另类 校园 | 99国内精品久久久久久久 | 亚洲一区二区在线播放 | 操网站| 美女福利视频一区 | 免费av电影网站 | 91精品中文字幕一区二区三区 | 日本中文字幕视频 | 亚洲一区不卡 | 在线播放中文字幕 | 国产一区免费 | 毛片黄片免费看 | 欧美一区二区三区在线看 | 欧美久久一区二区三区 | 国产午夜精品一区二区三区在线观看 | 精品国产一区二区三区久久久四川 | 中文久久 | 亚洲成人免费视频在线观看 | 欧美日韩在线一区二区三区 | 欧美中文字幕一区二区 | 国产精品美女久久久 | 91不卡| 亚洲一区二区三区在线 | 国产成人免费在线 | 国产婷婷综合 | 国产一区二区三区 | 久草新视频 | 97色综合 | 国产精品黄色 | 岛国av一区二区三区 | 成人欧美一区二区三区在线播放 | 欧美日韩国产一区二区 | 精品国产精品一区二区夜夜嗨 | 国产精品99久久久久久久vr | 亚洲一区二区三区免费观看 |