Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【深入理解JS核心技术】12. 什么是一阶函数

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

作者头像
达达前端
发布于 2022-05-11 13:21:52
发布于 2022-05-11 13:21:52
32100
代码可运行
举报
文章被收录于专栏:达达前端达达前端
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const firstOrder = () => console.log("I am a first order function!");
复制代码

函数名

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
function foo() { }
console.log(foo.bind(null).name); // bound foo
复制代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【前端基础进阶】JS-Object 功能详解
该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。 Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。同名属性会替换。
super.x
2019/04/12
1.5K0
【前端基础进阶】JS-Object 功能详解
前端进阶JS函数增强与对象增强
JavaScript中函数也是一个对象,那么对象中就可以有属性和方法,他有一些默认的属性
冷环渊
2023/03/09
7130
es3-es10整理
every、some 、forEach、filter 、indexOf、lastIndexOf、isArray、map、reduce、reduceRight
hss
2022/02/25
1.4K0
全面梳理JS对象的访问控制及代理反射
在 Javascript 中,读取、赋值、调用方法等等,几乎一切操作都是围绕“对象”展开的;长久以来,如何更好的了解和控制这些操作,就成了该语言发展中的重要问题。
江米小枣
2020/06/16
2.3K1
深入 JS 对象属性
对象的普通属性将字符串名称映射到值。例如,下面对象obj有一个数据属性,名称为 prop,对应的值为 123:
前端小智@大迁世界
2019/09/10
9.1K0
《你不知道的js(上卷)》笔记2(this和对象原型)
this关键字是javascript中最复杂的机制之一。它是一个很特别的关键字,被自动定义在 所有函数的作用域中。
陨石坠灭
2020/01/21
7250
ES6-标准入门·语法的扩展
ES6 对语法进行了大量扩展,包括且不限于字符串、正则、数值、函数、数组、对象的扩展等,此篇总结 ES6 新增的一些常用的新语法,一起来学习新姿势。
数媒派
2022/12/01
1.1K0
javascript 中Object一些操作方法
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
chuchur
2022/10/25
6960
JS面向对象
表示能否通过delete删除此属性,能否修改属性的特性,或能否修改把属性修改为访问器属性,如果直接使用字面量定义对象,默认值为true
4O4
2022/04/25
7.8K0
JavaScript数据属性和访问器属性
看《深入理解JavaScript》的this篇时看到“访问器属性”这个不熟悉的名词,百度后找到两篇感觉比较合适的文章,整合记录一下,以参考资料2为主,参考资料1为辅助补充。
WindCoder
2018/09/20
1.7K0
了解JavaScript对象的特殊属性
看实例,允许直接通过该方法定义属性并直接指定对应的特殊值,若没指定的特殊值则按false ,要想让默认值为 true,需要用字面量或 new Object() 来创建
努力的Greatiga
2022/07/25
7830
常用ES6-ES10知识点总结
在工作中我们会常用到的一些es6-es10的一些特性还记得多少,今天就让我们重新复习一遍
小周sir
2020/02/14
6610
JS面向对象编程
通过instanceof来判断当前的的对象是否是实例化出来的,如果是实例化出来的this指向实例化出来的对象,也就是这里的Person,否则作为普通函数来说当前的this指向window
小丞同学
2021/08/16
4.1K0
这次彻底理解了Object这个属性
实例化Object对象的方式有两种:使用Object构造器和使用对象的字面量。例如:
小周sir
2019/09/23
7350
【JS】307- 复习 Object.assign 原理及其实现
上篇文章介绍了赋值、浅拷贝和深拷贝,其中介绍了很多赋值和浅拷贝的相关知识以及两者区别,限于篇幅只介绍了一种常用深拷贝方案。
pingan8787
2019/08/06
1.2K0
Proxy
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。
小小杰啊
2022/12/21
2.5K0
ES6系列十四:Proxy
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。
用户8921923
2022/10/24
1.4K0
干货 | ES6 系列之我们来聊聊装饰器
       点击上方“腾讯NEXT学院”关注我们 Decorator 装饰器主要用于: 1. 装饰类 2. 装饰方法或属性 1 .装饰类 @annotationclass MyClass { } function annotation(target) { target.annotated = true;} 2. 装饰方法或属性 class MyClass { @readonly method() { }} function readonly(targe
腾讯NEXT学位
2020/02/11
6390
干货 | ES6 系列之我们来聊聊装饰器
JavaScript 高级程序设计(第 4 版)- 对象、类与面向对象编程
通过字面量来重写原型时,Person.prototype被设置为等于一个通过对象字面量创建的新对象,此时Person.prototype的constructor属性就不指向Person了
Cellinlab
2023/05/17
6560
JavaScript 高级程序设计(第 4 版)- 对象、类与面向对象编程
ES6的class详解
声明创建一个基于原型继承的具有给定名称的新类。 和类表达式一样,类声明体在严格模式下运行。构造函数是可选的。类声明不可以提升(这与函数声明不同)
用户10106350
2022/10/28
3760
相关推荐
【前端基础进阶】JS-Object 功能详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验