es6允許按照一定的模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。
簡單的陣列解構:
以前,為變數賦值,我們只能直接指定值。比如下面的**:
let a=0;而現在我們可以用陣列解構的方式來進行賦值。let b=1;
let c=
2;
let [a,b,c]=[1,2,
3];
陣列模式和賦值模式統一:
可以簡單的理解為等號左邊和等號右邊的形式要統一,如果不統一解構將失敗。
let [解構的預設值:a,[b,d],c]
=[1,[
2,4],
3];
解構賦值是允許你使用預設值的,先看乙個最簡單的預設是的例子。
let [f00 =上邊的例子陣列中只有乙個值,可能你會多少有些疑惑,我們就來個多個值的陣列,並給他一些預設值。'1']=;
console.
log(
f00);
// 1
let [i, p =現在我們對預設值有所了解,需要注意的是'這裡只給
p乙個預設值']
= ['當前只有乙個值,是屬於t的
'];console.
log(
i);
// 當前只有乙個值,是屬於t的
console.
log(
p);
// 這裡只給
p乙個預設值
undefined
和null
的區別。
let [i, p ='這裡只給
p乙個預設值']
= ['當前只有乙個值,是屬於t的
',undefined];
console.
log(
i);
// 當前只有乙個值,是屬於t的
console.
log(
p);
// 這裡只給
p乙個預設值
let [i, p ='這裡只給
p乙個預設值']
= ['當前只有乙個值,是屬於t的
',null
];console.
log(
i);
// 當前只有乙個值,是屬於t的
console.
log(
p);
// null
let [i, p =undefined相當於什麼都沒有,p是預設值。null相當於有值,但值為null。所以p並沒有取預設值,而是解構成了null。'這裡只給
p乙個預設值']
= ['當前只有乙個值,是屬於t的
','重新給
p乙個值'];
console.
log(
i);
// 當前只有乙個值,是屬於t的
console.
log(
p);
// 重新給
p乙個值
解構不僅可以用於陣列,還可以用於物件。
let =;注意:console.
log(
name);
// gao
console.
log(
age);
// 20
物件的解構與陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值由它的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值。
圓括號的使用
如果在解構之前就定義了變數,這時候你再解構會出現問題。下面是錯誤的**,編譯會報錯。
let bg;要解決報錯,使程式正常,我們這時候只要在解構的語句外邊加乙個圓括號就可以了。(這種情況是針對我們宣告的變數在最初的時候不清楚變數是何種型別的值)= ;console.
log(
bg);
//syntaxerror: unexpected token =
let bg;(字串也可以解構,這是因為,此時字串被轉換成了乙個類似陣列的物件。=);console.
log(
bg);
// red
let [l,k,j,h] = '這裡l、k、j、h分別取了字串中前四個字元。字串結構,注意這個地方只是乙個字串';
console.
log(
l);
// 字
console.
log(
k);
// 符
console.
log(
j);
// 串
console.
log(
h);
// 結
PHP 第三節 變數介紹
變數名與 php 中其它的標籤一樣遵循相同的規則。乙個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。按照正常的正規表示式,它將被表述為 a za z x7f xff a za z0 9 x7f xff note this 是乙個特殊的變數,它不能被賦值。變數預設總是傳值...
編譯原理 第三節
我們知道世界上存在很多種語言 我們可以把他們分為自然語言 人們日常交流的工具 和程式語言。自然語言複雜且難以描述,程式語言結構規整,便於處理。但兩者又有共性,即核心都由語法和語義兩部分組成。那什麼是語言呢?首先來看一下字母表定義 字母表是元素的非空有窮集合。字母表包含了語言中允許出現的全部符號。例如...
Itween筆記 第三節
itween關於動畫執行的補充.itween.camerafadefrom itween.hash amount 1f,time 2f 在兩秒結束後.itween.camerafadefrom itween.hash amount 1f,time 2f,oncomplete itweentest o...