ES6(A)の抱擁
そして、のconstましょう
CONSTとVAR、聞かせて、のような、変数を宣言するために使用することができます。しかし、変数がリフト中に代入するvarとして未定義としてのconst文が初期化されません、しましょう。
さらに、letが、変数はブロックレベルのスコープのconstの存在を宣言し、一時的に死んで、グローバル変数の汚染を減らすことができます。
それはそうでない場合は、エラーことは注目に値する、とのconst変数の定義は、使用前に宣言する必要がありましょう。
CONST、定数のより正確な定義は、この引数、および( -コンテンツ変数が、一定の参照基準タイプを除いて)定義された値の後に変更することができないとして
例えば-01-ブロックレベルのスコープ
{
var a=1;
let b=2;
}
console.log(a);//1
console.log(b);//报错 b is not defined
- ブロックレベルの範囲をよりよく理解するため、これら2つのコード下記参照
var arr = [];
for (var i = 0; i < 3; i++) {
arr[i] = function () {
console.log(i);
};
}
console.log(arr[0]()); // 3
console.log(arr[1]()); // 3
console.log(arr[2]()); // 3
- ここで0,1,2変数varで宣言されないブロックレベルのスコープが存在しないため、出力は期待できない、アウターループの私も有効です。
- そして、これだけグローバルIで、この私は今3を持って、実行。
- 私が定義されて試してみましょうに定義されたトップVAR
var arr = [];
for (let i = 0; i < 10; i++) {
arr[i] = function () {
console.log(i);
};
}
console.log(arr[0]()); // 0
console.log(arr[1]()); // 1
console.log(arr[2]()); // 2
- これは、外側のループはiがアクセスできないアクセスされる場合には、ブロックレベルの範囲に反映されています。各サイクルは、私は自分自身の価値、期待に沿って出力を保存しています。
例-02-は、割り当てを初期化しません
// var 的情况
console.log(a); // undefined
var a= 1;
// let 的情况
console.log(b); // 报错 b is not defined
let b= 2;
// const 的情况
// const声明一个只读的常量,不可变。
const c=1;
//报错 Assignment to constant variable.
c=2;
//const定义的常量必须初始化赋值
const d;
// SyntaxError: Missing initializer in const declaration
console.log(d)
解体の割り当て
ES6は、特定のパターンに従ってせ、オブジェクトが解体(非構造)と呼ばれる値の配列、変数代入、から抽出されます。パターンマッチングは、限り、等号の両側に同じパターンとして、左側の変数に対応する値を説明することに留意されたいです。解体が成功しなかった場合、変数の値は未定義に等しいです。
解体例-03-アレイの割り当て
//快速为变量赋值
var [a, b, c] = [1, 2, 3];
console.log(a);//1
console.log(b);//2
console.log(c);//3
//注意模式匹配
var [a, [[b], c]] = [1, [[2], 3]];
console.log(a)// 1
console.log(b)// 2
console.log(c)// 3
// 可以只获取自己想要的
var[ , , c] = ["a", "b", "c"];
console.log(c) // c
var [x, , z] = [1, 2, 3];
console.log(x)// 1
console.log(z)// 3
example-04-字符串的解构赋值
const [a, b] = '高芊';
console.log(a) // 高
console.log(b) // 芊
example-05-函数的解构赋值
function add([x, y]){
return x + y;
}
add([1, 2]); // 3
...文法
スーパー...演算子を使用して簡単配列やオブジェクトについては、パラメータは、オブジェクトのプロパティのリストまたは11を解体することができ、また一緒に置くことができます。それは注目に値する:脱構築とオブジェクトの配列の重要な違いがあります。配列の要素は、変数の値は、その位置によって決定され、順に配置されている、いかなる順序とオブジェクトのプロパティは、属性変数が正しい値を取得するために、同じ名前である必要があります。
構文例-06- ...
//一一拆解后拼凑
var obj={name:"高芊",like:"编程"}
var selfObj={...obj}//相当于拷贝
console.log(selfObj)//{name:"高芊",like:"编程"}
//一一拆解
var { a, b} = { a: "aaa", b: "bbb" };
console.log(a) // aaa
console.log(b) // bbb
//此时的b实际时剩余项组成的数组
var [a, ...b] = [1, 2, 3, 4];
console.log(a) // 1
console.log(b) // [2, 3, 4]
example-07-复杂对象解构
注意,此时p是一种模式,不是变量,故不会被赋值
var obj = {
p: [
'Hello',
{ b: 'World' }
]
};
var { p: [a, { b }] } = obj;
console.log(a) // "Hello"
console.log(b) // "World"
- pはまた、変数として割り当てられている場合は、次のように、それは書くことができます。
var obj = {
p: [
'Hello',
{ b: 'World' }
]
};
var { p,p: [a, { b }] } = obj;
console.log(a) // "Hello"
console.log(b) // "World"
console.log(p) // ['Hello', { b: 'World' } ]
次のコードは、4つの非構造割り当て、それぞれ解体のLOC、開始行、4列の属性割り当てを有します。、唯一の行、最後の解体割り当て行、列属性で、なお列変数、LOCおよびすべてのモードではなく、変数を開始します。
var node = {
loc: {
start: {
line: 1,
column: 5
}
}
};
var { loc, loc: { start }, loc: { start: { line,column }} } = node;
console.log(line) // 1
console.log(column) // 5
console.log(start) // {line: 1, column: 5}
console.log(loc) //{start: {line: 1, column: 5}}
文字列の拡張メソッド
- ES5のみメソッドIndexOfは、文字列が別の文字列に含まれているかどうかを決定するために使用することができます。
- *のstartsWith、endsWith、含まれています:ES6も3つの新しいメソッドを提供します。
- また、padStartを処理する一般データで使用される2つあり、padEnd
- )(含む:パラメータ文字列を検索するかどうかを決定するブール値を返します。
- startsWith():これは、元の文字列の先頭のパラメータの文字列かどうかが決定される、ブール値を返します。
- endsWith()は:それは元の文字列の末尾のパラメータ文字列かどうかが決定される、ブール値を返します。
- padStart():PARAM1前充填ビット:最大長; PARAM2は:最大長さが補充されたコンテンツに達していません
- padEnd():最大長; PARAM2:充填ビットPARAM1後の最大長がコンテンツを補充される達していません
例-08-文字列の拡張メソッド
var s = 'Hello world!';
console.log(s.startsWith('Hello')) // true
console.log(s.endsWith('!')) // true
console.log(s.includes('o')) // true
処理時間
function dateFormat(date=new Date()) {
let y = date.getFullYear().toString();
let m = (date.getMonth() + 1).toString().padStart(2,'0');
let d = date.getDate().toString().padStart(2,'0');
let h = date.getHours().toString().padStart(2,'0');
let M = date.getMinutes().toString().padStart(2,'0');
let s = date.getSeconds().toString().padStart(2,'0');
return y + m + d + " " +h + ":" + M + ":" +s;
}
console.log(dateFormat())
//20191208 12:39:38 注意日期:08 前置补了一个0