First-class Function (第ä¸ç´é¢æ°)
ããããã°ã©ãã³ã°è¨èªã第ä¸ç´é¢æ° (First-class functions) ãæã¤ã¨è¨ãããå ´åããã®è¨èªã®é¢æ°ããã®ä»ã®å¤æ°ã¨åæ§ã«æ±ããããã¨ã表ãã¾ããä¾ãã°ãããããè¨èªã§ã¯ã颿°ãä»ã®é¢æ°ã¸ã®å¼æ°ã¨ãã¦æ¸¡ããããä»ã®é¢æ°ããè¿å´ãããã夿°ã®å¤ã¨ãã¦ä»£å ¥ããããããã¨ãã§ãã¾ãã
ä¾
>颿°ã夿°ã¸ä»£å ¥
const foo = () => {
console.log("foobar");
};
foo(); // 夿°ã使ç¨ãã¦å¼ã³åºã
// foobar
ããã§ã¯ç¡å颿°ã夿°ã«ä»£å
¥ãã¦ããã夿°ã使ç¨ãã¦æ«å°¾ã«æ¬å¼§ () ã追å ãããã¨ã§ããã®é¢æ°ãå¼ã³åºãã¦ãã¾ãã
ã¡ã¢: 颿°ã«ååããã£ã¦ãã夿°ã使ç¨ãã¦ãã®é¢æ°ãå¼ã³åºããã¨ãã§ãã¾ããååãä»ããã¨ã³ã¼ãããããã°ããã¨ãã«å½¹ç«ã¡ã¾ãããå¼ã³åºãæ¹æ³ã«å½±é¿ã¯ããã¾ããã
弿°ã¨ãã¦é¢æ°ã渡ã
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
// `sayHello` ã `greeting` 颿°ã®å¼æ°ã¨ãã¦æ¸¡ã
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!
ããã§ã¯ sayHello() 颿°ã greeting() 颿°ã®å¼æ°ã¨ãã¦æ¸¡ãã¦ããã颿°ã夿°ã¨ãã¦æ±ã£ã¦ãããã¨ã示ãã¦ãã¾ãã
ã¡ã¢:
ä»ã®é¢æ°ã¸å¼æ°ã¨ãã¦æ¸¡ããã颿°ã¯ãã³ã¼ã«ããã¯é¢æ° ã¨å¼ã°ãã¾ãã sayHello ã¯ã³ã¼ã«ããã¯é¢æ°ã§ãã
颿°ãè¿ã
function sayHello() {
return () => {
console.log("Hello!");
};
}
ãã®ä¾ã§ã¯ã颿°ãä»ã®é¢æ°ããè¿ãå¿ è¦ãããã¾ãã - 颿°ãè¿ããã¨ãã§ããã®ã¯ã JavaScript ã§ã¯é¢æ°ãå¤ã¨ãã¦æ±ã£ã¦ããããã§ãã
ã¡ã¢: 颿°ãè¿ã颿°ã¯é«é颿°ã¨å¼ã°ãã¾ãã
é¢é£æ å ±
- ã¦ã£ãããã£ã¢ã®ç¬¬ä¸ç´é¢æ°
- é¢é£ç¨èª: