Node.js
Node.js v6新機能と改善点
サーチ…
前書き
ノード6がノードの新しいLTSバージョンになります。新しいES6標準の導入により、言語に対するいくつかの改善が見られます。導入された新機能のいくつかを紹介し、実装方法の例を紹介します。
デフォルト関数のパラメータ
function addTwo(a, b = 2) {
return a + b;
}
addTwo(3) // Returns the result 5
既定の関数パラメータを追加することで、引数をオプションにして、デフォルト値をあなたが選んだ値にすることができます。
残りのパラメータ
function argumentLength(...args) {
return args.length;
}
argumentLength(5) // returns 1
argumentLength(5, 3) //returns 2
argumentLength(5, 3, 6) //returns 3
使用して、関数の最後の引数巻頭によって...
関数に渡されるすべての引数を配列として読み込まれます。この例では、複数の引数を渡し、それらの引数から作成された配列の長さを取得します。
スプレッドオペレータ
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);
拡張構文では、複数の引数(関数呼び出しの場合)または複数の要素(配列リテラルの場合)または複数の変数が必要な場所で式を展開できます。残りのパラメータのように、あなたの配列を単に前置きします...
矢印関数
Arrow関数は、ECMAScript 6で関数を定義する新しい方法です。
// traditional way of declaring and defining function
var sum = function(a,b)
{
return a+b;
}
// Arrow Function
let sum = (a, b)=> a+b;
//Function defination using multiple lines
let checkIfEven = (a) => {
if( a % 2 == 0 )
return true;
else
return false;
}
矢印機能の「this」
これは、関数でその機能を呼び出すために使用されるインスタンス・オブジェクトを指すが、これは 、矢印関数の矢印関数が定義された関数の本に等しいです。
例を使って理解する。
var normalFn = function(){
console.log(this) // refers to global/window object.
}
var arrowFn = () => console.log(this); // refers to window or global object as function is defined in scope of global/window object
var service = {
constructorFn : function(){
console.log(this); // refers to service as service object used to call method.
var nestedFn = function(){
console.log(this); // refers window or global object because no instance object was used to call this method.
}
nestedFn();
},
arrowFn : function(){
console.log(this); // refers to service as service object was used to call method.
let fn = () => console.log(this); // refers to service object as arrow function defined in function which is called using instance object.
fn();
}
}
// calling defined functions
constructorFn();
arrowFn();
service.constructorFn();
service.arrowFn();
矢印関数では、 これは、関数lexical scopeであり、矢印関数が定義されている関数のスコープです。
最初の例は、関数を定義する伝統的な方法であり、したがって、 これはグローバル/ウィンドウオブジェクトを参照しています。
第2の例では、これは矢印関数内で使用され、したがって、これは 、(Windowsまたはグローバルオブジェクトである)に定義される範囲を指します。 3番目の例では、 これは、サービスオブジェクトが関数を呼び出すために使用されるため、サービスオブジェクトです。
4番目の例では、arrow関数はスコープがserviceである関数から定義され、呼び出されます。したがってserviceオブジェクトを出力します。
注: - グローバルオブジェクトはNode.Jsに、Windowsオブジェクトはブラウザに表示されます。