JSによる関数型プログラミングの学習
9045 ワード
関数型プログラミングとは
なぜ機能JavaScript?
さあ、やりましょう!
...どうやって?
すべてを関数で行う
input -> output
機能しません:
var name = “Lakshya”;
var greeting = “Hi, I’m ”;
console.log(greeting + name);
=> “Hi, I’m Lakshya”
機能性
function greet(name) {
return “Hi, I’m ” + name;
}
greet(“Lakshya”);
=> “Hi, I’m Lakshya”
避けて副作用
use “pure” functions
純粋ではない
var name = “Lakshya”;
function greet() {
console.log(“Hi, I’m ” + name);
}
純粋
function greet(name) {
return “Hi, I’m ” + name;
}
高次関数の使用
functions can be inputs/outputs
function makeAdjectifier(adjective) {
return function (string) {
return adjective + “ ” + string;
};
}
var coolifier = makeAdjectifier(“dev”);
coolifier(“to”);
=> “dev to”
反復しない
use map, reduce, filter
Source: https://www.datasciencecentral.com/forum/topics/what-is-map-reduce
変異を避ける
use immutable data
突然変異
var rooms = [“H1”, “H2”, “H3”];
rooms[2] = “H4”;
rooms;
=> ["H1", "H2", "H4"]
突然変異はない
var rooms = [“H1”, “H2”, “H3”];
Var newRooms = rooms.map(function (rm) {
if (rm == “H3”) { return “H4”; }
else { return rm; }
});
newRooms;
=> ["H1", "H2", "H4"]
rooms;
=> ["H1", "H2", "H3"]
Reference
この問題について(JSによる関数型プログラミングの学習), 我々は、より多くの情報をここで見つけました https://dev.to/lakshyatyagi24/learning-functional-programming-with-js-9d3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol