1. はじめに
1.1 Babel トランスコーダ広く使用されている ES6 トランスパイラです。 npm をインストール --save-dev @babel/core 設定ファイル # 最新のトランスコーディングルール $ npm install --save-dev @babel/preset-env # react トランスコーディングルール$ npm install --save-dev @babel/preset-react // `presets` フィールドはトランスコーディング ルールを設定します。公式 Web サイトでは次のルール セットが提供されており、必要に応じてインストールできます。 { 「プリセット」: [ "@babel/env", 「@babel/プリセット-react」 ]、 「プラグイン」: [] } 1.2 ポリフィルデフォルトでは、 例: $ npm インストール --save-dev core-js 再ジェネレーター ランタイム 'core-js' をインポートします。 'regenerator-runtime/runtime' をインポートします。 2. let と const 2.1 しましょうスコープに関して言えば、 if(true){ a = 1; var b = 2 } console.log(a) // ReferenceError: a は定義されていません コンソールログ(b) // 2 以下の例を見ると、グローバル変数 i は 1 つしかないため、出力は 1 になると予想されます。そのため、 var funcs = []; (var i = 0; i < 5; i++) の場合 { funcs.push(関数() { コンソールにログ出力します。 }); } 関数[1](); // 5 修正: 各反復で i 変数にローカル ストレージを使用し、クロージャを使用してスコープを閉じます。 var funcs = []; (var i = 0; i < 5; i++) の場合 { (関数 () { var ローカル = i funcs.push(関数() { console.log(ローカル); }); } )() } 関数[1](); // 1
2.2 定数
(真)の場合{ 定数 PI = 3.141515926; PI = 66666 // TypeError: 定数変数への代入。 } console.log(PI) // ReferenceError: PI が定義されていません
定数obj = {}; // obj に属性を追加します。これは成功です。obj.name = 'hello'; // obj を別のオブジェクトにポイントするとエラーが発生します obj = {}; // TypeError: "obj" は読み取り専用です 3. 脱構築脱構築とは文字通り、構造を分解すること、つまり元の構造を破壊することを意味します。 3.1 オブジェクトの構造化解除基本的な使い方: {名前、年齢} = {名前: "こんにちは", 年齢: 12}とします。 console.log(名前、年齢) // こんにちは 12 デフォルト値の設定 { name = 'hi', age = 12 } = { name : 'hello' } とします。 console.log(名前、年齢) // こんにちは 12
let { name, ...残り } = { name: "hello", age: 12, gender: '男' }; console.log(name, 残り) // こんにちは {年齢: 12、性別: '男性'} 3.2 配列の分割
[a, ...残り] = [1, 2, 3, 4]とします。 console.log(a, 残り) // 1 [2, 3, 4] 配列の分解中に一部のメンバーは無視されます。 [a, , ...残り] = [1, 2, 3, 4]とします。 console.log(a, 残り) // 1 [3, 4] 3.3 関数パラメータの分割配列パラメータ 関数add([x, y]){ x + y を返します。 } 追加([1, 2]); // 3 オブジェクトパラメータ 関数 add({x, y} = { x: 0, y: 0 }) { x + y を返します。 } 追加します({x:1,y:2}); 3.4 一般的なシナリオ3 番目の変数を使用せずに変数を交換します。 x = 1 とします。 y = 2とします。 y = 0; JSONデータの抽出 json = { コード: 0, データ: {名前: 'hi'} }; { コード、データ: ユーザー } = json; console.log(コード、ユーザー); // 0 {名前: 'hi'} マップ構造のトラバース 定数マップ = 新しい Map(); map.set('name', 'hello'); map.set('年齢', 12); for (let [キー, 値] of map) { console.log(キー + " is " + 値); } 4. 拡張4.1 文字列拡張テンプレート文字列、これは非常に便利です。これらを示すにはバッククォート (`) を使用します。通常の文字列として使用することも、複数行の文字列を定義したり、文字列に変数を埋め込んだりするために使用することもできます。 `ユーザー ${user.name} がログインしています...`); 4.2 機能拡張
パラメータのデフォルト値が設定されると、関数が宣言され初期化されるときに、パラメータは別の 関数 add(x, y = 1) { x + yを返す } apply() の代替 // ES5 バージョン Math.max.apply(null, [1, 3, 2]) // ES6 の書き方 Math.max(...[1, 3, 2]) 4.3 配列拡張配列の結合 // ES5 の書き方 var list = [1,2] リスト = リスト.concat([3]) // ES6の方法 var list = [1,2] リスト = [...リスト、3] 新しい配列 API Array.from()、Array.of()、find()、findIndex() などについては、MDN を参照してください。 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 4.4 オブジェクト拡張オブジェクトのプロパティ、メソッドの省略形 データ = [1,2] const resp = {data}; // 属性の省略形、{data: data} と同等 定数オブジェクト = { add(x, y) { // メソッドの省略形。add: function(x, y){...} と同等 x + y を返します。 } }; 拡張属性 定数点 = {x: 1, y: 2} 定数 pointD = {...ポイント、z: 3} console.log(pointD) // {x: 1, y: 2, z: 3} // 重複属性がある場合は順序に注意してください。 定数点 = {x: 1, y: 2} 定数 pointD = {...点、x: 4、z: 3} console.log(pointD) // {x: 4, y: 2, z: 3} 定数点 = {x: 1, y: 2} 定数 pointD = {x: 4, z: 3, ...点} console.log(pointD) // {x: 1, z: 3, y: 2} プロパティの説明オブジェクト オブジェクトの各プロパティには、プロパティの動作を制御する 定数点 = {x: 1, y: 2} Object.getOwnPropertyDescriptor(ポイント、'x') /** { 設定可能: true enumerable: true // 列挙可能な値を示します: 1 writable: true // 書き込み可能であることを示す} **/ 属性トラバーサル
定数点 = {x: 1, y: 2} for(let key in point){ console.log(キー) } オブジェクトの新しいメソッド: オブジェクトの複製 関数クローン(origin) { Object.assign({}, origin) を返します。 } オブジェクトの結合 const merge = (target, ...sources) => Object.assign(target, ...sources); デフォルト値の指定 定数DEFAULT_CONFIG = { デバッグ: true、 }; 関数プロセス(オプション) { オプション = Object.assign({}, DEFAULT_CONFIG, オプション); console.log(オプション); // ... } 4.5 演算子の拡張指数演算子 2 ** 10 // 1024 2 ** 3 ** 2 // 512 は 2 ** (3 ** 2) に等しい let a=10; a **= 3; // a = a * a * a と同等 演算子の連鎖
const obj = {name: 'job', say(){console.log('hello')}} obj?.name // obj == null と等しい ? undefined : obj.name obj?.say() // obj == null と等しい ? undefined : obj.say() ヌルチェック演算子
const obj = {名前: ''} obj.name || 'hello' // 'hello' obj.name ?? 'hello' // '' 5. ~のために
定数リスト = ['a', 'b', 'c'] for (let v in list){ コンソール.log(v) // 0,1,2 } for (let v of list){ console.log(v) // a,b,c } 6. まとめフロントエンド JavaScript ES6 の詳細に関するこの記事はこれで終わりです。より関連性の高い 以下もご興味があるかもしれません:
|
<<: Docker で Rancher をデプロイする方法 (落とし穴なし)
>>: Deepin20.1 システムは MySQL8.0.23 をインストールします (非常に詳細な MySQL8 インストール チュートリアル)
目次序文: 1. ユーザー権利の概要2. 実際の権限管理序文:データベースのユーザー権限管理について...
目次Vue2 レスポンシブ原則のレビューVue3 レスポンシブ原則の分析ネストされたオブジェクトの応...
1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...
ホスト 'xxxx' はこの MySQL サーバーに接続できませんエラー: 1130...
目次1. 計画タスクをカスタマイズする2. 時間を同期する3. 練習する4. セキュリティの問題1....
問題の説明: Macを購入し、初めてMySQLをインストールしました。初期パスワードが分かりません。...
背景最近、SQL 文を書くときに、IN と Exists のどちらを選択するか迷ったので、両方の方法...
目次初期化初期化状態()初期化プロパティ()初期化データ()観察する()オブザーバーリアクティブを定...
要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...
最初の方法: Junge のワンクリック スクリプトを使用して、LNMP 環境で MYSQL データ...
<br />原文: http://www.mikkolee.com/13私は最近、ver...
会社の開発者がテスト環境で挿入ステートメントを実行すると、正常に実行されるまでに 10 秒以上かかり...
パスワードモードPDO::__construct(): サーバーがクライアントに不明な認証方法を要求...
この記事では、検証コードのランダム生成と検証を実現するためのJavaScriptの具体的なコードを参...
MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...