[Day17] 一级函式

这边从 008 的 Day5 开始,先跳过 Day3、Day4 篇浏览器的部分。

一级函式

函式是物件的一种,那麽或许也听过在 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
一级函式 & 函式应用


<<:  Proxmox VE 挂接网路储存 (一)

>>:  那些被忽略但很好用的 Web API / BroadcastChannel

[Day-15] R语言 - 分群应用(一) 补值前处理 ( Fill.NA with Clustering in R.Studio )

您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 ## 应用一: 分群补数值 #### libr...

Day12:终於要进去新手村了-Javascript-资料型态转换-将字串变成数字

前两篇文章中有认识到了变数是要用来放资料的,但是有时候会遇到资料内容需要不同的类型,比如说数字,它可...

[DAY06] 开始用 Notebook 在 Azure Machine Learing 上写程序

DAY06 开始用 Notebook 在 Azure Machine Learing 上写程序 我们...

D3JsDay19 地图加入了事件,地点资料就呈现—为地图加入互动事件

制作样板 昨天已经绘制出每个淡绿色的点来显示资料中的经纬度在svg地图上面,今天要做的事情是当滑鼠移...

【Day 29】学 Go 之路的小检讨 + concurrent merge sort

这篇文检讨一下学 Go 这几天, 今天没有一个学得很完整的东西可以分享(再加上好累# 想写一个 c...