ECMAScript 6入門学習ノート(一)


ECMAScriptはJavascript言語の国際標準であり、JavaScriptはECMAScriptの実現である.
ECMAScriptの特性をまとめます.
1、letとconst命令
 letコマンドは変数を宣言するために使用され、使用法はvarと類似していますが、宣言された変数はletコマンドがあるコードブロック内でのみ有効で、JavaScriptのためにブロックレベルのスコープが追加されました.
function f1() {
    let n = 5;
    if(true){
        let n = 10
    }
    console.log(n) //5
}
上の関数には二つのコードブロックがあります.変数nを宣言しました.出力結果は5です.外層コードブロックは、内層コードブロックの影響を受けない.
constは定数を宣言するために用いられます.一旦声明したら、その値は変えられません.
const PI = 3.1415
PI //3.1415
定数に値を再割り当てします.その値は変更されません.constのスコープはletコマンドと同じです.声明があるブロックレベルのスコープ内でのみ有効です.
2、変数の構造割当値
ES 6は、一定のパターンに従って、配列とオブジェクトから値を抽出し、変数に値を割り当てることができます.
var [a,b,c] = [1,2,3]
上のコードは、配列から値を抽出し、位置の対応関係に従って変数に値を割り当てます.
一般的な割当方法は、もし機構が成功しないなら、変数の値はundefinedに等しいです.
var [foo,[[bar],baz]] = [1,[[2], 3]];
foo//1
bar//2
baz//3

var [,,third] = ["foo", "bar", "baz"]
third// "baz"
undefinedやnullを分解するとエラーが発生します.解は配列やオブジェクトにしか使えません.他の元のタイプの値は対応するオブジェクトに変換できますが、undefinedやnullはオブジェクトに変換できないため、エラーが発生しました.
//  
var [foo] = undefined
var [foo] = null
構成を解除すると、デフォルトの値を指定できます.プロファイルは、varコマンドだけでなく、letおよびconstコマンドにも適用される.
var [foo=true] = []
foo//true

var [v1,v2,...,vN] = array;
let [v1,v2,...,vN] = array;
const [v1,v2,...,vN] = array;
解は配列だけでなくオブジェクトにも使用できます.
オブジェクトの解は配列と重要な違いがあります.配列の要素は順番に並べられ、変数の値はその位置によって決まります.オブジェクトの属性には順序がありません.変数は属性と同名でなければ、正しい値を取ることができません.
var {bar, foo} = {foo:"aaa", bar:"bbb"}
foo//aaa
bar//bbb

var {baz} = {foo:"aaa", bar:"bbb"}
baz//undefined
分配の用途:
  • 変換変数の値
  • [x, y] = [y, x]
    は、関数から複数の値を返します.関数は1つの値だけを返します.複数の値を返すには、行列やオブジェクトに入れて返すしかありません.これらの値を容易に取り出すことができます.
  • function example() {
        return [1,2,3]
    }
    var [a,b,c] = example();
    
    function example2() {
        return {foo: 1, bar: 2}
    }
    var {foo, bar} = example2()
    関数パラメータの定義
  • function f({x,y,z)} {
    
    }
    
    f({x:1, y:2, z:3})
    関数パラメータのデフォルト値
  • は、map分解を遍歴する.任意の配置は、Iteratorインターフェースのオブジェクトは、for...ofサイクルを使用することができます.Mapは元の构成を解除してIteratorインターフェイスを支持して、変数の构造を配合して値を割り当てて、キーの名前とキーの値を得るのはとても便利です.
  • var map = new Map();
    map.set('first', 'hello');
    map.set('second', 'world');
    
    for(let [key, value] of map) {
        console.log(key +" is " + value)
    }
    //first is hello
    //second is world
    
    入力モジュールの指定方法です.モジュールをロードする時、どのような入力方法を指定する必要がありますか?構成を解除すると、入力文が非常に明確になります.
  • const { SourceMapConsumer, SourceNode} = require("source-map");