ジャバスクリプト — 新しい構文と関数
5503 ワード
アマゾンで私の本をチェックしてくださいhttps://www.amazon.com/John-Au-Yeung/e/B08FT5NT62
今すぐ私の電子メールリストを購読http://jauyeung.net/subscribe/
他のプログラミング言語と同様に、JavaScriptはプログラムを読みやすく維持するためにベストプラクティスの独自のリストを持っています.JavaScriptにトリッキーな部分もたくさんあります.我々はJavaScriptコードを読みやすくするために簡単にいくつかのベストプラクティスに従うことができます.
この記事では、IFEをモジュールとブロックに置き換えて、伝統的な関数をクラスメソッドと矢印関数に置き換えて、言語属性を
IFEはすぐに呼び出された関数式を表します.これは、関数を定義し、すぐに呼び出すという構成です.
外部からのアクセスを防ぐためにデータを隔離するのは一般的な方法です.また、それは世界的な範囲から彼らを隠します.
これは、モジュールの標準がなく、グローバルスコープから物事を隠す簡単な方法もありません.
しかし,es 6では新機能としてモジュールを導入する.つまり、以下のように置き換えることができます.
モジュールを使用すると、別のフォルダにモジュールを置くことができますので、IFIESとの名前空間の必要はありません.
また、ES 6のもう一つの新機能は、ブロックです.次に、外側のスコープから分離されたコードのブロックを、次のように曲線括弧を使用して定義できます.
これで、任意のブロックを定義できません
また、ES 6では、コンストラクタ関数のクラス構文を持っています.それでは、我々は必要はありません
それは相続をはるかに容易にします
加えて、我々の値を変更しない矢印関数があります
唯一の理由は
たとえば、次のように書くことで簡単なジェネレータ関数を作成できます.
The
例えば、書く代わりに
写真でAmbitious Creative Co. - Rick Barrett をUnsplash
関数を純粋関数として書くべきです.これは、同じ入力で常に同じ出力を与える関数です.
これはテストが容易になるので重要です.また、我々はそれが正確に何をするかを知っています.
純粋な機能を読んで理解しやすいです.フローは決定的で簡単です.したがって、それは予測可能です.
pure関数の例は次のようになります.
したがって、論理フローは非常に予測可能である.
純粋な関数でない関数の例は、同じ入力が与えられても、異なる出力を返すものである.例えば、我々が年数を得る機能があるならば
純粋な関数を作るには、代わりに書くことができます.
また、現在の日付や日付の実装の変更を心配する必要はありません.
関数を拡張する前に、私たちが純粋な関数に変更する前に
さらに、変化
予測不可能性のため、トレースしたりデバッグしたりするのも難しいです.
ES 6の破壊的な構文では、実際に引数をたくさん渡すことができます.
例えば、書く代わりに
我々は呼び出すことができます
また、クラス構文は、特にコンストラクタを定義するのに非常に明確な方法です.値
純粋な関数を書くことは良い練習です.なぜなら、同じ入力を与えられた同じ出力を常に持っているからです.また、それを読んでテストしやすいです.
破壊的な構文で、オブジェクトの変数への引数をたくさん減らすことができます.すべては、引数として渡すプロパティのキー名と位置を自動的に与えられます.
今すぐ私の電子メールリストを購読http://jauyeung.net/subscribe/
他のプログラミング言語と同様に、JavaScriptはプログラムを読みやすく維持するためにベストプラクティスの独自のリストを持っています.JavaScriptにトリッキーな部分もたくさんあります.我々はJavaScriptコードを読みやすくするために簡単にいくつかのベストプラクティスに従うことができます.
この記事では、IFEをモジュールとブロックに置き換えて、伝統的な関数をクラスメソッドと矢印関数に置き換えて、言語属性を
script
タグ、純粋な関数を書いて、引数の長いリストを避けてください.IFEをモジュールとブロックに置き換える
IFEはすぐに呼び出された関数式を表します.これは、関数を定義し、すぐに呼び出すという構成です.
外部からのアクセスを防ぐためにデータを隔離するのは一般的な方法です.また、それは世界的な範囲から彼らを隠します.
これは、モジュールの標準がなく、グローバルスコープから物事を隠す簡単な方法もありません.
しかし,es 6では新機能としてモジュールを導入する.つまり、以下のように置き換えることができます.
(function() {
let x = 1;
})()
以下のようにします.let x = 1;
モジュールの外で利用できないなら、私たちはそれをエクスポートしません.モジュールを使用すると、別のフォルダにモジュールを置くことができますので、IFIESとの名前空間の必要はありません.
また、ES 6のもう一つの新機能は、ブロックです.次に、外側のスコープから分離されたコードのブロックを、次のように曲線括弧を使用して定義できます.
{
let x = 1;
console.log(x);
}
ブロックスコープのキーワードlet
or const
変数または定数宣言の場合は、アクセスされないようにする必要はありません.これで、任意のブロックを定義できません
if
文、ループ、またはIifes.伝統関数を矢印関数とクラス
また、ES 6では、コンストラクタ関数のクラス構文を持っています.それでは、我々は必要はありません
function
コンストラクタ関数を作成するキーワード.それは相続をはるかに容易にします
this
○○.加えて、我々の値を変更しない矢印関数があります
this
関数の内部.唯一の理由は
function
キーワードはジェネレータ関数で、function*
キーワード.たとえば、次のように書くことで簡単なジェネレータ関数を作成できます.
const generator = function*() {
yield 1;
yield 2;
}
ジェネレータ関数はジェネレータを返すことができますので、何も返しません.スクリプトからの言語属性から
The
language
属性は、もはや含まれなければなりませんscript
タグ.例えば、書く代わりに
<script src="[https://code.jquery.com/jquery-2.2.4.min.js](https://code.jquery.com/jquery-2.2.4.min.js)" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous" language='text/javascript'></script>
書き込みます.<script src="[https://code.jquery.com/jquery-2.2.4.min.js](https://code.jquery.com/jquery-2.2.4.min.js)" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
JavaScriptはブラウザで動作する言語左ですからです.写真でAmbitious Creative Co. - Rick Barrett をUnsplash
純粋関数を書く
関数を純粋関数として書くべきです.これは、同じ入力で常に同じ出力を与える関数です.
これはテストが容易になるので重要です.また、我々はそれが正確に何をするかを知っています.
純粋な機能を読んで理解しやすいです.フローは決定的で簡単です.したがって、それは予測可能です.
pure関数の例は次のようになります.
const add = (a, b) => a + b;
The add
関数は、同じ結果を出力します.パラメータから結果を計算するので、同じ入力を与えます.それは他の何にも依存しない.したがって、論理フローは非常に予測可能である.
純粋な関数でない関数の例は、同じ入力が与えられても、異なる出力を返すものである.例えば、我々が年数を得る機能があるならば
x
今年の年前const getYearBefore = (x) => new Date().getFullYear() - x;
これは純粋な機能ではないnew Date()
現在の日付に応じて変更されます.だからgetYearBefore
同じ入力を与えられた現在の日付の年に依存します.純粋な関数を作るには、代わりに書くことができます.
const getYearBefore = (date, x) => date.getFullYear() - x;
現在の日付は関数に渡されますので、同じ入力を持っていると同じ結果を得ます.パラメータを組み合わせて結果を返すだけです.また、現在の日付や日付の実装の変更を心配する必要はありません.
関数を拡張する前に、私たちが純粋な関数に変更する前に
new Date()
○○.さらに、変化
new Date()
変更前にプログラムの他の部分を中断します.現在、我々はそれについて心配する必要はありません.予測不可能性のため、トレースしたりデバッグしたりするのも難しいです.
ロング引数
ES 6の破壊的な構文では、実際に引数をたくさん渡すことができます.
例えば、書く代わりに
const add = (a, b, c, d, e) => a + b + c + d + e;
には5つのパラメータがあります.書くことができます.const add = ({
a,
b,
c,
d,
e
}) => a + b + c + d + e;
この方法では、1つのオブジェクトを関数に渡し、add
関数.我々は呼び出すことができます
add
次のようになります.const obj = {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5
}
add(obj);
ネストしたオブジェクトでも動作します.例えば、以下のように書くことができます.const buildString = ({
foo: {
bar,
baz
}
}) => `${bar} ${baz}`;
その後、我々は呼び出すことができますbuildString
次のようになります.const obj = {
foo: {
bar: 'bar',
baz: 'baz'
}
};
buildString(obj);
データを非公開にするには、モジュールとブロックを使用してIifesを置き換えることができます.関数を定義して呼び出すために余分なコードを必要としません.また、クラス構文は、特にコンストラクタを定義するのに非常に明確な方法です.値
this
も明らかです.純粋な関数を書くことは良い練習です.なぜなら、同じ入力を与えられた同じ出力を常に持っているからです.また、それを読んでテストしやすいです.
破壊的な構文で、オブジェクトの変数への引数をたくさん減らすことができます.すべては、引数として渡すプロパティのキー名と位置を自動的に与えられます.
Reference
この問題について(ジャバスクリプト — 新しい構文と関数), 我々は、より多くの情報をここで見つけました https://dev.to/aumayeung/javascript-best-practice-new-constructs-and-functions-1mgkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol