函式是物件的一种,那麽或许也听过在 JavaScript 里面函式是第一级公民。 --008
第一级公民是什麽意思,透过书上的举例来了解,指的是可以将函式存放在变数、物件甚至是阵列中。
// 把函式存入变数,呼叫时执行 funcA();
const funcA = function () {};
// 把函式存数「阵列」,呼叫时执行 funcB[0]()
const funcB = [function () {}];
// 呼叫时执行 funcC.method() 或 funcC['method']()
const funcC = { method: function () {}};
也可将函式以参数的形式传给另一个函式,甚至由其他函式来 return 它。因函式实际上就是一个物件,所以具有属性,任何可以对物件做的事,都可以对函式操作。如下例:
// 把函数当作参数,传入另一个函式中
const funcD = function (func) {
return func;
};
const runFuncPassedToFuncD = funcD(function () {
console.log("Hi"); // 设 run...函式存放的是funcD,而参数为一个匿名函式
});
runFuncPassedToFuncD(); // Hi, 呼叫 run...函式
const funcE = function () {};
funcE.answer = "yup"; // 新增属性,函式是物件的一种
console.log(funcE.answer); // 'yup'
虽然 typeof 检查函式的时候会得到 "function" 常常误会成 JS 的另一种型别,但实际上仍然是 object。
函式是一种物件,值也是物件。可以把他想性程序一种可以「被呼叫」(be invoked)的特殊物件(值)。
而把 A 函式当作参数传入 B 函式,此时 B 函式也称作高阶函式(High Order Function)。
参考资料
008 天重新认识 JavaScript
一级函式 & 函式应用
>>: 那些被忽略但很好用的 Web API / BroadcastChannel
您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 ## 应用一: 分群补数值 #### libr...
前两篇文章中有认识到了变数是要用来放资料的,但是有时候会遇到资料内容需要不同的类型,比如说数字,它可...
DAY06 开始用 Notebook 在 Azure Machine Learing 上写程序 我们...
制作样板 昨天已经绘制出每个淡绿色的点来显示资料中的经纬度在svg地图上面,今天要做的事情是当滑鼠移...
这篇文检讨一下学 Go 这几天, 今天没有一个学得很完整的东西可以分享(再加上好累# 想写一个 c...