ES 6で幸福度を上げる機能があります。

6364 ワード

一、変数解構成値の用途
1)変数の値を交換する

let x = 1;
let y = 2;
[x, y] = [y, x]
2)関数から複数の値を返します。

//       
function example(){
  return [1, 2, 4];
}
let [a, b, c] = example() 
//       
function example(){
  return {
    foo:1,
    bar: 2
  }
}
let {foo, bar} = example();    ( {foo, bar} = example() )
3)JSONデータ抽出

let jsonData = {
 id:42,
 status: "OK",
 data: [867, 5309]
};
let { id, status, data: number} = jsonData;
4)入力モジュールの指定方法
モジュールをロードするときは、入力方法を指定する必要があります。

const { SourceMapConsumer, SourceNode } = require("source-map")
5)行列コピーの機能
S 5では、開発者はしばしばconcat()方法を用いて配列をクローンする。

//   es5      
var colors = [ 'red', 'green', 'blue' ];
var clonedColors = colors.concat();
console.log(clonedColors); // "[red, green, blue]"
concat()メソッドの設計は、2つの配列を接続することで始まり、パラメータを呼び出しないと現在の配列のコピーを返します。非定常要素の文法によって同じ目標を達成することができます。

let colors = [ 'red', 'green', 'blue' ]
let [ ...clonedColors ] = colors;
console.log(clonedColors); // "[red, green, blue]"
6)セットに合わせて、重複なしの配列を作成します。

function eliminateDuplicates(items) {
  return [...new Set(items)]
}
let numbers = [1, 2, 3, 3, 3, 4, 5];
let noDuplicates = eliminateDuplicates(numbers );
console.log(noDuplicates ); // [1,2,3,4,5]
7)アプリを使って二つのデータを一つにまとめる

var arra1 = [{
 name: '  ',
 age: 26
}]
var arra2 = [{
 name: '  ',
 age: 27
}]
arra1.push.apply(arra1, arra2)
console.log(arra1)
二、関数の使い方(よくあるものは多く言わない)
1)すぐに実行する関数式を作成します。

// es5
let person = function(name) {
 return {
  getName: function() {
   return name;
  }
 }
}('  ');
console.log(person.getName()); //   
このコードでは、直ちに関数式を実行して、getName()方法を含む新しいオブジェクトを作成し、パラメータnameをオブジェクトのプライベートメンバとして関数の引数に戻す。
矢印の関数が小かっこに包まれている限り、同じ機能が実現されます。

// es6
let person = ((name) => {
 return {
  getName: function() {
   return name;
  }
 }
})('  2');
console.log(person.getName()); //  
2.パラメータのデフォルト値を利用して、あるパラメータを指定してもいいです。省略するとエラーが発生します。

function throwEmptyError() {
  throw new Error('      ');
}
function foo(mustBeParams = throwEmptyError() ){
  return mustBeParams();
}
foo() //       
三、拡張対象の機能性はコードをより簡潔にする
1)属性名の計算が可能です。
SE 6では、四角括弧を使用して属性名を計算できます。

let lastName ='last name';
let person = {
  "first name": 'Nicholas',
  [lastName]: 'Zakas'
}
console.log(person['first name']); // "Nicholas"
console.log(person[lastName]); // Zakas
2)Object.assignを利用して二つのオブジェクトを合併する。

function request(options) {
 let defaultOptions = {
  port: 8000,
  type: 'get'
 }
 Object.assign(options,defaultOptions);
 console.log(options)
}
request({url: 'http://www.baidu.com'})
四、es 6の簡潔な関数の書き方を結び付けて、高次関数の応用
1)tab関数

//   tap       vaule        value     ,      
const tap = (value) => (fn) => (
 typeof(fn) === 'function' && fn(value),
 console.log(value)
)
tab関数の用途:サーバからの配列を遍歴していて、データが間違っていることを発見したと仮定して、調整したいです。配列に何が含まれているかを見てください。tab関数を使うことができます。

[1, 2 ,3, 4].forEach((a) => {
 tap(a)((a)=> {
  console.log(a)
 })
});
#### 2) once   
多くの場合、私たちは与えられた関数を実行して、一回の銀行支払請求などを開始するだけで、ここでonece関数が使えます。

const once = (fn) => {
  let done = false;
  return function () {
    return done?undefined:((done=true),fn.apply(this,arguments))
  }
}
const doPayment = once(()=>{
 console.log('payment is done')
})
doPayment(); // payment is done
console.log(doPayment()); //undefined
#### 3)         
開発者がコードを作成する時に使う様々な階級の日記を作成します。私達は次のようなログ関数を作成できます。

const loggerHelper = (mode, initialMessage, errorMessage, lineNo) => {
 if (mode === 'DEBUG') {
  console.debug(initialMessage,errorMessage + 'at line:' + lineNo)
 }
 else if (mode === 'ERROR') {
  console.error(initialMessage,errorMessage + 'at line:' + lineNo)
 }
 else if (mode === 'WARN') {
  console.warn(initialMessage,errorMessage + 'at line:' + lineNo)
 }
 else
  throw "Wrong mode"
}
開発者がコンソールにStats.jsファイルのエラーを印刷する必要がある場合、以下のようにすることができます。

loggerHelper("ERROR", "ERROR At Stats.js", "Invalid argument passed", 23);
このように完璧で読み取り可能なプログラマーを追求するには、あまり受け入れられないかもしれません。今はカリーを使って上記のコードを最適化します。
まず簡単に何が関数コリー化なのかを説明します。
コリゼーションは一つの多パラメータ関数を一つのネストに変換する一元関数プロセスです。  
一つのパッケージは多パラメータ関数を一要素関数に変換するcurry関数です。

let curry = (fn) => {
 if (typeof fn !== 'function') {
  throw Error('No function provided');
 }
 return function curriedFn(...args) {
  //                 ,
  if (args.length < fn.length) {
   return function() {
    return curriedFn.apply(null, args.concat([].slice.call(arguments)));
   }
  }
  return fn.apply(null, args)
 }
} 
let errorLogger = curry(loggerHelper)("ERROR")("ERROR At Stats.js");
let debugLogger = curry(loggerHelper)("DEBUG")("ERROR")("Debug At Stats.js");
let warnLogger = curry(loggerHelper)("WARN")("Warn")("At Stats.js");
//     
errorLogger("Error message", 21)
//     
debugLogger('Debug message', 233)
//     
warnLogger("Warn message", 34); 
今は上のカリー化を簡単に引用して、それぞれの文脈でそれらを使うことができます。
締め括りをつける
以上は小编がご绍介したES 6の中で幸福度を高める小机能です。皆さんに助けてほしいです。もし何かご质问があれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。