字串也可以解構賦值。這是因為此時,字串被轉換成了乙個類似陣列的物件。
const
[a, b, c, d, e]
='hello'
;a // "h"
b // "e"
c // "l"
d // "l"
e // "o"
類似陣列的物件都有乙個length
屬性,因此還可以對這個屬性解構賦值。
let
='hello'
;len // 5
解構賦值的規則是,只要等號右邊的值不是物件或陣列,就先將其轉為物件。由於undefined
和null
無法轉為物件,所以對它們進行解構賦值,都會報錯。
let
= undefined;
// typeerror
let=
null
;// typeerror
函式的引數也可以使用解構賦值。
function
add(
[x, y]
)add([
1,2]
);// 3
上面**中,函式add
的引數表面上是乙個陣列,但在傳入引數的那一刻,陣列引數就被解構成變數x
和y
。對於函式內部的**來說,它們能感受到的引數就是x
和y
。
下面是另乙個例子。
[[1
,2],
[3,4
]].map((
[a, b]
)=> a + b)
;// [ 3, 7 ]
函式引數的解構也可以使用預設值。
function
move(=
)move()
;// [3, 8]
move()
;// [3, 0]
move()
;// [0, 0]
move()
;// [0, 0]
上面**中,函式move
的引數是乙個物件,通過對這個物件進行解構,得到變數x
和y
的值。如果解構失敗,x
和y
等於預設值。
注意,下面的寫法會得到不一樣的結果。
function
move(=
)move()
;// [3, 8]
move()
;// [3, undefined]
move()
;// [undefined, undefined]
move()
;// [0, 0]
上面**是為函式move
的引數指定預設值,而不是為變數x
和y
指定預設值,所以會得到與前一種寫法不同的結果。
undefined
就會觸發函式引數的預設值。
[
1, undefined,3]
.map
((x =
'yes'
)=> x)
;// [ 1, 'yes', 3 ]
ES6 字串 字串
又到了一天一度的寫筆記的時間了,今天看的es6字串部分,因為內容我感覺挺多的,而且需要理解,所以第二個部分模板字串的筆記就放到明天來寫了,今天就寫一下學習字串物件的筆記,筆記分為以下幾點 開始今天的筆記吧!什麼字元的表示方法?第一次聽到這個問題的時候,可能一臉蒙,我查閱了一下資料,簡單的大概的了解了...
複習es6 解構賦值 字串的擴充套件
1.陣列的解構賦值 從陣列中獲得變數的值,給對應的宣告變數賦值,有次序和對應位置賦值 解構賦值的時候右邊必須可以遍歷 解構賦值可以使用預設值 惰性求值,當賦值時候為undefined時候,預設是個函式就會執行函式 2.物件解構賦值 與陣列不同的是,物件沒有按次序排序 物件按照屬性名賦值 3.字串擴充...
ES6新增字串模板和解構賦值
當我們需要拼接字串時,往往會遇到一些不便,比如變數太多,用的太多導致自己都看不清哪些內容,長還不清晰,換行需要加轉義字元等等。舊語法 var name 張三 var year 1995 var month 6 console.log name 是 year 年 month 月份 n出生的 es6的字...