JavaScriptの関数式プログラミング思想-純関数
1664 ワード
どの言語においてもBugの存在は避けられない.私たちは一連のプログラミングの思想でできるだけBugの発生を避けます.
Bug保存の法則
私達がウェブサイトを開発する時、いったんウェブサイトの応用コードの量が一定の程度に達したら、それは避けられないのがある種類のBugを含んで、これはJavaScript特有のものではありませんて、ほとんどの言語のすべてある共通の病気です.これは、Bugの導入を回避するためにあるコードによってはいけないという意味ではない.
Bugの利器を避ける---純関数
関数の概念を知っています.伝統的な関数はパラメータを受け取ってから値を返します.同じ入力Xに対して同じ出力Yがあります.すなわち、関数が実行される場合、純関数は、スコープ外の変数に依存しないし、修正しないし、自分のスコープ内だけで仕事をする場合、リターン値が必要です.
コードを見ましょう.
同じように、私たちが入ってきたパラメータが参照値である場合、このような値を今後の作業で修正するためには、クローニングの方法で実現しなければなりません.
私たちはメンバー情報を検索して表示すると、キーワードを入力するとキーワードを含むメンバー情報が表示されます.キャンセルすると、全員のメンバー情報が表示されます.
JavaScriptキーコード:
純関数のより高い利点は、予測性を強化し、コード管理の難しさを低減するために、より良い管理状態にすることですが、フロントエンドは基本的には副作用とのつきあいです.
--ホームページ転送ゲート--
Bug保存の法則
私達がウェブサイトを開発する時、いったんウェブサイトの応用コードの量が一定の程度に達したら、それは避けられないのがある種類のBugを含んで、これはJavaScript特有のものではありませんて、ほとんどの言語のすべてある共通の病気です.これは、Bugの導入を回避するためにあるコードによってはいけないという意味ではない.
Bugの利器を避ける---純関数
関数の概念を知っています.伝統的な関数はパラメータを受け取ってから値を返します.同じ入力Xに対して同じ出力Yがあります.すなわち、関数が実行される場合、純関数は、スコープ外の変数に依存しないし、修正しないし、自分のスコープ内だけで仕事をする場合、リターン値が必要です.
コードを見ましょう.
var num = 20 ;
function add(x){
return x > num;
}
add(18);
上のコードは明らかに純関数ではなく、関数内部に外部変数numを利用しています.私たちがちょっと変えたら.var num = 20;
function add(x,num){
return x > num;
}
このように書きます 関数内部にnum型参が入ってくることを純関数と呼びます.同じように、私たちが入ってきたパラメータが参照値である場合、このような値を今後の作業で修正するためには、クローニングの方法で実現しなければなりません.
function add(_arr){
var obj = {
name : "wang",
}
var newArr = [];
for(var i = 0; i < _arr.length; i ++){
newArr[i] = deepClone(_arr[i]);//
}
newArr.push(obj);
return newArr;
}
私たちが一番よく使う純関数のところは配列フィルタリングです.私たちはメンバー情報を検索して表示すると、キーワードを入力するとキーワードを含むメンバー情報が表示されます.キャンセルすると、全員のメンバー情報が表示されます.
JavaScriptキーコード:
function filterByText(text,arr){
var newArr = [];
for(var i = 0; i < arr.length; i ++){
arr[i].name.indexOf(text) != -1 ? newArr.push(arr[i]) : "";
}
return newArr;
}
純関数の役割は今後のコンポーネント化開発−状態共有において多く用いられる.純関数のより高い利点は、予測性を強化し、コード管理の難しさを低減するために、より良い管理状態にすることですが、フロントエンドは基本的には副作用とのつきあいです.
--ホームページ転送ゲート--