ES 6変数と解構(二)
8089 ワード
一、変数の宣言と使用【テスト例はnode環境でテストする必要があり、ブラウザ環境ではES 6コードを完全に互換性がない】ES 6では{}を使用して任意のコードを含むことができ、{}に包まれた内容を1つのコードブロック(ローカル役割ドメイン)letキーワード【音響変数】特性と呼ぶ:1.ブロックレベルの役割ドメイン【宣言コードブロックに局所的に作用する】2.変数宣言は昇格しません【変数が宣言されないまでこの変数は使用できません】3.一時的デッドゾーン【この変数は前の領域を宣言する】4.繰り返し宣言はできません【同じコードブロックで同じ変数を繰り返し宣言することはできません】constキーワード【定数を宣言する(一般的には大文字で定数を表す)】特性:【let宣言変数に従う特性に次の2つの特性を追加する】1、宣言時に初期化【宣言と同時に値を付与しなければならない】2、値を変更できない2、解構1、配列の解构賦値【左が変数、右が値、左が一致値がない场合undefined】完全解构【左右データがちょうど一致】eg:
不完全解构【左右のデータが异なる】a、左のデータが多い场合はその変数のみを宣言し、その値がundefinedb、右のデータの余分な项目はegを无视します:
集合解体【拡張演算子の使用...】a、...tailは、現在右側に一致していないすべての値からなる配列egを返します.
デフォルト値【一致値がundefinedに厳密に等しい場合、デフォルト値は有効】eg:
デフォルト値は関数注:まず値が一致するかどうかを判断し、マッチング値がundefinedに厳格に等しい場合、デフォルト値の付与演算を行います.それ以外の場合、デフォルト値付与操作ではegは実行されません.
2、オブジェクトの解体賦値【右側に左変数に対応する属性名が存在しない場合、オブジェクトの属性値はundefined、すなわちオブジェクトに宣言されていない属性の値はundefined】オブジェクトの元の構造賦値【変数の名前変更後、最終的に宣言された変数は名前変更の変量】eg:
オブジェクトのプロパティには順序がありません.変数はプロパティと同じ名前でなければ、正しい値を取得できません.【名前を変更しても簡単に書くことができます】eg:
オブジェクトネスト解構eg:
デフォルト値(デフォルト値が有効な条件は、オブジェクトのプロパティ値がundefinedに厳密に等しいことです)eg:
3、文字列の解構賦値解構の場合、文字列は類似配列のオブジェクトに変換される.eg:
length属性解構eg:
4、数値およびブール値が賦値解体を解体する場合、等号の右側が数値およびブール値である場合、対応する基本参照データ型オブジェクトegに移行します.
5、関数パラメータの解构賦値基本配列解构賦値伝参eg:
関数パラメータにはデフォルトegがあります.
三、常用用途1、変数値の交換egを解く:
2、関数パラメータの割り当て:eg:
3、抽出対象のデータeg:
4、入力モジュールの指定方法
5、map構造を遍歴する
転載先:https://www.cnblogs.com/nzcblogs/p/11348883.html
let [a,b,c] = [1,2,3];
不完全解构【左右のデータが异なる】a、左のデータが多い场合はその変数のみを宣言し、その値がundefinedb、右のデータの余分な项目はegを无视します:
let [a, [b], d] = [1, [2, 3], 4]; //a = 1; b = 2; d = 4
集合解体【拡張演算子の使用...】a、...tailは、現在右側に一致していないすべての値からなる配列egを返します.
let [head, ...tail] = [1, 2, 3, 4]; //head = 1; tail = [2, 3, 4]
//
let sum = 0;
function test(...arr){
//rest 【 , 】 ------> arguments
//arr = [1,2,3,4,5]
for(let i=0;i){
sum +=arr[i];
}
}
test(1,2,3,4,5);
デフォルト値【一致値がundefinedに厳密に等しい場合、デフォルト値は有効】eg:
let [x, y = 'b'] = ['a']; // x='a', y='b’
デフォルト値は関数注:まず値が一致するかどうかを判断し、マッチング値がundefinedに厳格に等しい場合、デフォルト値の付与演算を行います.それ以外の場合、デフォルト値付与操作ではegは実行されません.
function test() {
console.log('test');
return 2;
}
let [x = test()] = [];
console.log(x); //test 2
2、オブジェクトの解体賦値【右側に左変数に対応する属性名が存在しない場合、オブジェクトの属性値はundefined、すなわちオブジェクトに宣言されていない属性の値はundefined】オブジェクトの元の構造賦値【変数の名前変更後、最終的に宣言された変数は名前変更の変量】eg:
let {name:myName,age:myAge} = {name:'nzc',age:18}
// 【 name name myName ==》 let myName = 'nzc'】
let myName = 'nzc';
let myAge = 18;
オブジェクトのプロパティには順序がありません.変数はプロパティと同じ名前でなければ、正しい値を取得できません.【名前を変更しても簡単に書くことができます】eg:
let {name:name,age:age} = {name:'nzc',age:18}
//
let {name,age} = {name:'nzc',age:18}
//
let name = 'nzc';
let age = 18;
オブジェクトネスト解構eg:
let person = { param: [ 'nzc', { age: 18 } ] };
let { param: [name, { age }] } = person; //name='nzc' age=18
// param [name, { age }], ; param
let { param: [name, { age }] } = { param: [ 'nzc', { age: 18 } ] }
デフォルト値(デフォルト値が有効な条件は、オブジェクトのプロパティ値がundefinedに厳密に等しいことです)eg:
//name='nzchs'->name ;age:myAge=21->myAge 【age myAge 】
let {name='nzchs',age:myAge=21} = {name:'nzc',age:18}
let {name='nzchs',age:myAge=21} = {name:'nzc'}
3、文字列の解構賦値解構の場合、文字列は類似配列のオブジェクトに変換される.eg:
let [a, b, c] = 'hello'; //a=h;b=e;c=l
length属性解構eg:
let {length : len} = 'hello'; //len = 5 【 length len 】
4、数値およびブール値が賦値解体を解体する場合、等号の右側が数値およびブール値である場合、対応する基本参照データ型オブジェクトegに移行します.
let {toString: str1} = 123; // str1 === Number.prototype.toString true
let {toString: str2} = true; // str2 === Boolean.prototype.toString true
5、関数パラメータの解构賦値基本配列解构賦値伝参eg:
function add([x, y]){ return x + y; }
add([1, 2]); // add 3
関数パラメータにはデフォルトegがあります.
function test({x = 0, y = 0}) {
return [x, y];
}
//
test({x: 3, y: 8}); // [3, 8]
test({x: 3}); // [3, 0]
test({}); // [0, 0]
test(); // Cannot destructure property `x` of 'undefined' or 'null'
三、常用用途1、変数値の交換egを解く:
let x = 1;
let y = 2;
[x,y] = [y,x];
console.log(x,y); //2 1
2、関数パラメータの割り当て:eg:
//[a=0,b=1] = [1] a=1,b=1
function test([a=0,b=1]){
return a+b;
}
test([1]); // 2
3、抽出対象のデータeg:
let obj= { id: 42, status: "OK", data: [867, 5309] };
let { id, status, data: number } = obj; //
4、入力モジュールの指定方法
const { SourceMapConsumer, SourceNode } = require("source-map");
5、map構造を遍歴する
var map = new Map();
map.set('name', 'nzc');
map.set('age', 18);
for (let [key, value] of map) {
console.log(key + " is " + value); // name is nzc age is 18
}
転載先:https://www.cnblogs.com/nzcblogs/p/11348883.html