# 章序号/节序号/节/笔记序号 codecademy, Iterators,High-Order Function # 概念阐释 高阶函数是指接受其他函数作为**参数**或**返回函数作为输出**的函数。比如,“我们举办了一个生日聚会”是一个可以建立在“我们做了个蛋糕。”之上的函数。 ```js const announceThatIAmDoingImportantWork = () => {     console.log("I’m doing very important work!"); }; const busy = announceThatIAmDoingImportantWork; busy(); console.log(busy.name);//print announceThatIAmDoingImportantWork ``` - 注意:我们想要**分配函数本身的值,而不是它在调用时返回的值。** 所以是`announceThatIAmDoingImportantWork`不是`announceThatIAmDoingImportantWork();` - `busy`变量相当于赋予为函数了,所以它的变量名可以调用 **`busy();`** ,也可以使用函数的[属性和方法](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function); # 举例子 # 类比、比较与对比 # 问题 1. 函数作为数据类型, 用`isTwoPlusTwo`变量名重新赋值;调用变量;并用函数属性`.name` print函数名称。 ```js const checkThatTwoPlusTwoEqualsFourAMillionTimes = () => { for(let i = 1; i <= 1000000; i++) { if ( (2 + 2) != 4) { console.log('Something has gone very wrong :( '); } } }; ``` # 问题答案 ```js let isTwoPlusTwo = checkThatTwoPlusTwoEqualsFourAMillionTimes; isTwoPlusTwo(); console.log(isTwoPlusTwo.name); ``` # 备注(经验集/错误集) ## 经验集 ## 错误集 - 新变量相当于被函数附体了,成为了新宿主 ## 参考资料