自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

展開操作符:一家人就這么被拆散了

開發(fā) 后端
iterable是ES2015增加的類型,展開操作符可以作用于iterable,將其展開為0到多個參數。Array、String這些常見的類型都屬于iterable。

大家好,我卡頌。

想必大家在業(yè)務中應該經常使用展開操作符(Spread syntax),比如展開數組:

function sum(x, y, z) {
return x + y + z;
}

const numbers = [1, 2, 3];

// 6
console.log(sum(...numbers));

克隆對象:

const clone = { ...obj };

但你有沒有見過如下操作:

本文就來聊聊上述情況的成因。

展開操作符對字符串的作用

iterable是ES2015增加的類型,展開操作符可以作用于iterable,將其展開為0到多個參數。Array、String這些常見的類型都屬于iterable。

iterable可以使用for..of語法遍歷,比如:

for (let i of 'abc') {
console.log(i)
}
// a
// b
// c

Array屬于iterable很好理解,但是為什么String也屬于iterable呢?

這是因為在ES2015之前,String基本實現了Array用于遍歷的所有要素,比如:

  • 擁有.length屬性
  • 可以通過下標訪問索引位置的字符

我們不討論這種實現是否正確,只是想說:用于遍歷時,String與Array體驗類似。

所以到了ES2015,當Array作為iterable支持for...of遍歷時,從體驗上來說,String也需要支持同樣的語法。

用展開操作符展開「一家三口」的結果:

用for...of遍歷,可以看到對應的Unicode字符:

那么「一家三口」作為一個emoji,有什么特殊的呢?

Emoji Sequence

這種由多個emoji組合成的emoji被稱為Emoji Sequence,他利用了文字可以組合形成這一特性。

比如,泰語就是可以組合形成的文字。

泰語里的薩瓦迪卡(你好),寫為「??????????」。你會發(fā)現,在字符頭上有個「帽子」。

此外,泰語中的一些字符還有「鞋子」,比如「??」。

又或者又有「帽子」又有「鞋子」,比如:「???」。

在泰語輸入法中,用戶依次輸入「基本字符」、「帽子」、「鞋子」,組合成需要的字符后再輸入「結束字符」,就拼湊成一個完整字符。

回到我們的「一家三口」,你會發(fā)現,展開后的第1、3項為「零寬字符」(Zero Width Joiner,簡稱zwj):

從上述for...of遍歷的結果可知,這個零寬字符為\u200D。他通常用于排版。但Emoji Sequence把他拿去作為emoji之間的膠水。

換言之,你可以用\u200D將多個emoji組合成一個Emoji Sequence。

比如,「爸爸」,「媽媽」,「小男孩」可以組合成一家三口:

當然,「小女孩」也可以:

「小姑娘」與「學士帽」組合成「戴學士帽的小姑娘」:

總結

當了解組合方法后,你可以用現有emoji組合成全新的Emoji Sequence。

兩個爸爸帶孩子的家庭,兩個媽媽帶孩子的家庭,這都是可以嘗試的嘛~

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2009-02-24 10:27:02

程序員軟件開發(fā)iPhone游戲

2023-09-15 06:59:00

AMD 32處理器撕裂者

2021-10-31 18:59:55

Python操作符用法

2010-07-14 14:55:07

Perl操作符

2009-08-19 17:26:28

C# 操作符

2013-01-16 08:52:11

2017-08-31 11:59:48

語音

2011-04-08 16:26:14

JavaScript

2010-07-19 11:00:24

Perl操作符

2010-07-14 14:30:31

Perl操作符

2009-07-21 09:31:00

Scala操作符

2009-09-15 17:16:58

LINQ查詢操作符

2009-09-16 09:09:23

Linq Contai

2010-07-14 14:18:51

Perl操作符

2012-02-06 09:13:23

LINQ

2013-11-19 16:17:23

2010-01-28 11:16:28

C++操作符

2023-01-31 09:49:36

硅谷裁員

2023-05-24 21:17:37

機器人

2017-01-03 16:12:13

RxJava操作符Android
點贊
收藏

51CTO技術棧公眾號