前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【深入理解JS核心技术】12. 什么是一阶函数

【深入理解JS核心技术】12. 什么是一阶函数

作者头像
达达前端
发布2022-05-11 21:21:52
3000
发布2022-05-11 21:21:52
举报
文章被收录于专栏:达达前端达达前端

一阶函数是一个不接受另一个函数作为参数并且不返回函数作为其返回值的函数。

代码语言:javascript
复制
const firstOrder = () => console.log("I am a first order function!");
复制代码

函数名

函数名就是指向函数的指针,一个函数可以有多个名称。

代码语言:javascript
复制
function sum(num1, num2) { 
 return num1 + num2; 
} 

console.log(sum(10, 10)); // 20 

let anotherSum = sum; 
console.log(anotherSum(10, 10)); // 20 

sum = null; 
console.log(anotherSum(10, 10)); // 20
复制代码

ECMAScript6的所有函数对象都会暴露一个只读的name属性,其中包含关于函数的信息。多数情况下,这个属性中保存的就是一个函数标识符,或者说是一个字符串化的变量名。即使函数没有名称,也会如实显示成空字符串。如果它是使用Function构造函数创建的,则会标识成“anonymous".

代码语言:javascript
复制
function foo() {} 
let bar = function() {}; 
let baz = () => {}; 

console.log(foo.name); // foo 
console.log(bar.name); // bar 
console.log(baz.name); // baz 
console.log((() => {}).name); //(空字符串)
console.log((new Function()).name); // anonymous
复制代码

如果函数是一个获取函数,设置函数,或者使用bind()实例化,那么标识符前面会加上一个前缀。

代码语言:javascript
复制
function foo() { }
console.log(foo.bind(null).name); // bound foo
复制代码
代码语言:javascript
复制
let dog = {
 years: 1,
 get age() {
  return this.years;
 },
 set age(newAge) {
  this.years = newAge;
 }
}
let propertyDescriptor = Object.getOwnPropertyDescriptor(dog, 'age');
console.log(propertyDescriptor.get.name); // get age
console.log(propertyDescriptor.set.name); // set age
复制代码
代码语言:javascript
复制
console.log(Object.getOwnPropertyDescriptor(dog, 'years'))

VM2829:1 
{value: 1, writable: true, enumerable: true, configurable: true}
configurable: true
enumerable: true
value: 1
writable: true
复制代码

未完结!更多内容尽情期待下一节~

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com