ES6 函数扩展(箭头函数等)

es6 函数扩展之箭头函数:完整指南 深入讲解ES6函数扩展中的箭头函数语法与特性,对比传统函数差异,帮助开发者更高效地使用ES6函数扩展提升代码可读性与简洁性。 阅读详情

函数扩展(箭头函数等)

1、函数参数的默认值

(1)与解构赋值默认值结合使用
(2)参数默认值的位置(应该是尾参数)
(3)函数的length属性(返回没有指定默认值的参数个数)
(4)作用域(若设置了参数默认值,参数会形成一个单独的作用域

2 、rest参数

(1)…变量名
(2)函数的length属性,不包括 rest 参数

3、严格模式

函数内部可以设定为严格模式 ‘use strict’(使用默认值、解构赋值、或者扩展运算符情况除外)

4、name属性

(1)函数的name属性,返回该函数的函数名(注意匿名函数中ES5与ES6返回值的不同)
(2)Function构造函数返回的函数实例,name属性的值为anonymous
(3)bind返回的函数,name属性值会加上bound前缀

5、箭头函数

(1)如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
  };

(2)如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

var sum = (num1, num2) => { return num1 + num2; }

(3)如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。

let getTempItem = id => ({ id: id, name: "Temp" });

(4)箭头函数可以与变量解构结合使用。

const full = ({ first, last }) => first + ' ' + last;
// 等同于
function full(person) {
  return person.first + ' ' + person.last;
  }

注意:
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
(2)除了this,以下三个变量在箭头函数之中也是不存在的,指向外层函数的对应变量:arguments、super、new.target
(3)由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向
不适用场合:
(1)定义对象的方法,且该方法内部包括this
(2)需要动态this的时候,也不应使用箭头函数

6、尾调用优化

(1)尾调用:指某个函数的最后一步是调用另一个函数
(2)尾调用优化:如果所有函数都是尾调用,那么完全可以做到每次执行时,调用帧只有一项,这将大大节省内存
(3)注意:只有不再用到外层函数的内部变量,内层函数的调用帧才会取代外层函数的调用帧,否则就无法进行“尾调用优化”。目前只有 Safari 浏览器支持尾调用优化,Chrome 和 Firefox 都不支持。
(4)尾递归:函数调用自身,称为递归。如果尾调用自身,就称为尾递归
(5)柯里化(currying):函数式编程中的概念,意思是将多参数的函数转换成单参数的形式
(6)严格模式:ES6 的尾调用优化只在严格模式下开启,正常模式是无效的
(7)尾递归优化的实现

7、函数参数的尾逗号

ES2017 允许函数的最后一个参数有尾逗号

8、 Function.prototype.toString()

ES2019 对函数实例的toString()方法做出了修改
toString()方法返回函数代码本身,以前会省略注释和空格
修改后的toString()方法,明确要求返回一模一样的原始代码

9、 catch命令的参数省略

JavaScript 语言的try…catch结构,以前明确要求catch命令后面必须跟参数,接受try代码块抛出的错误对象。
ES2019 做出了改变,允许catch语句省略参数

ifix5.8连接ab plc的点-通过rslinx 以ifix连接ab plc的点为例 1.先在rslinx上把plc的点导出为opc server 2.使用opc power tool 作为opc client 去连接 3.保存到项目的PDB文件夹下面,并且以节点名命名。 也可以不以节点名命名,系统自动会生成一个以节点名命名的这种文件,就显得很乱。 同时,项目的PDB目录下面必须还得拷过来一个de... 阅读详情

相关推荐

解决创建conda环境时Solving environment: failed 和 ResolvePackageNotFound 的错误

环境配置文件是在别的机器上导出的,文件里的软件包是按照导出文件的机器配置的,因此导出的时候,把这些包的详细信息也导了出来,即第二个等号后面跟着的信息,当我们按照这个文件创建环境时,conda就会根据我们机器的配置信息,按照配置文件里包的详细信息,去找这个包,那当然找不到,结果发现“查无此包”,因此也就会报上面的错误。上面找到了问题的所在之处,解决起来就很简单了,只需要在配置文件 environment.yml 中将包的详细信息删除,也就是第二个等号后面的内容。然而升级超级慢不说,也没有解决我的问题。...

番茄炒蛋三分糖 4万+

2020/02/07 03-箭头函数、传参、作用域和异常处理

每种语言有点区别,函数表达式也有点不一样 可以认为这个后面的匿名函数就是lambda表达式 ![ 申明提升 python的东西可以在这里加强一下 这里是把匿名函数立即调用了,一旦调用就是生成器对象,就可以next了 箭头函数 还有其他的写法,逗号表达式是以加5为准 要看x=右边多少 undefined的未定义 返回undefined 返回的结果是一个数组,内次返回的undef...

qq_42227818的博客 837

LVDS系列23:Xilinx Ultrascale系ISERDESE3原语(一)

当FIFO_RD_CLK与CLKDIV对齐时,也就是Latency With Late FIFO Empty情况时,延迟比前一种情况长一个FIFO_RD_CLK时钟周期,也就是在FIFO_RD_CLK上升沿后一点,CLKDIV才成功驱动完FIFO_EMPTY的变化,于是读侧要得到FIFO_EMPTY为0的情况则要等到下一个FIFO_RD_CLK的上升沿采集时;IS_CLK_INVERTED、IS_CLK_B_INVERTED设置CLK和CLK_B是否反转,一般情况下设置0;

weixin_38828382的博客 900

js执行异常处理 箭头函数 正则表达式

JS代码执行过程中,可能会出现异常。

jokerJOJO777的博客 648

UG/NX二次开发实例流程样例(nx1980+vs2019)

以上就是基本操作了,下面进入界面开发流程,nx1980的界面开发操作,也需要在块UI界面编辑器中操作,很多教程都没有讲解这一点,尤其是如何进入块UI界面编辑器,那么我在这里详细说明一下步骤。》,这一篇文章我们将详细讲述,如何开发一个具体的功能——根据用户输入的数据,在特定的点上创建一个指定大小的立方体。可以将文件保存当桌面,笔者保存在桌面的create_block目录中了,如下图所示,可以发现生成了三个文件。4.在新建模型完成后,我们准备创建交互UI,按照下图所示的顺序,找到块UI界面编辑器,。

秋月的私语 1万+

Autosar Davinci Configurator新建工程以及导入DBC和CDD

Autosar Davinci Configurator新建工程前言一、Autosar Davinci Configurator新建工程二、Autosar Davinci Configurator导入DBC和CDD1.引入库2.读入数据总结 前言 如何用 DavinciCFG 新建工程,以及导入DBC和CDD文件。 一、Autosar Davinci Configurator新建工程 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、Autosar Davinc

别再跑偏了的博客 1万+

es61---ES6 语法---箭头函数,扩展运算符,异常处理

面试题中一般会让你用es6去写一些算法,考验你对es6语法的熟练度 一.let和const命令 es5 var 关键字 声明变量 es6 : ① const 常量(只能读取 不能修改 只读) ② let 普通变量 声明的变量只能在当前的代码块内部有效 不能提前声明 ③ 代码块 {} 简称代码块 作用域 undefined 声明了却没有值 is not defined 既...

XIAO_YuBaby的博客 557

AD9361 官方例程

文章目录一、官方资料1.1 介绍1.2 下载 和 使用1.3 相关资料二、步骤2.1 在Vivado中构建HDL2.2 在SDK中构建No- OS总结 一、官方资料 1.1 介绍 HDL参考设计介绍:AD9361 HDL Reference Designs 无操作系统介绍:AD9361 No-OS Software 1.2 下载 和 使用 HDL下载:Download HDL 在Vivado中构建HDL:Building HDL No-OS下载:Download No-OS 1.3 相关资料 AD

weixin_44630490的博客 3万+

箭头函数。

声明式 function fn(){} 赋值式 var fn=function(){} 自执行函数(function(){})() agguments 函数内部自带的属性,表示实参的集合,有形参也不影响------伪数组 箭头函数---函数简写的方式 声明式函数不能简写(匿名可以) ()=>{} (a,b)=>{} //只有一个参数可以取消(),多个和零个不能 (a)=>{} a=>{} //只有一行代码}{}可以不写 有return就要写...

kui大师的博客 251

nRF52840开发环境搭建:从零开始配置Keil与SDK

本文详细介绍了nRF52840开发环境搭建的全过程,包括硬件准备、Keil MDK与nRF5 SDK的安装配置、常见问题解决方案及蓝牙功能开发进阶。特别强调了J-Link调试器的使用和SDK版本匹配的重要性,帮助开发者快速上手nRF52840开发。

weixin_29176179的博客 885

PCB过孔全介绍

过孔(via)是多层PCB的重要组成部分之一,钻孔的费用通常占PCB制板费用的30%到40%。简单的说来,PCB上的每一个孔都可以称之为过孔。从作用上看,过孔可以分成两类:一是用作各层间的电气连接;二是用作器件的固定或定位。如果从工艺制程上来说,这些过孔一般又分为三类,即盲孔(blind via)、埋孔(buried via)和通孔(through via)。盲孔位于印刷线路板的顶层和底层表面,具

小王的自我修行路 2357

阿里面试官:如何给所有的async函数添加try/catch?

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群前言 三面的时候被问到了这个问题,当时思路虽然正确,可惜表述的不够清晰后来花了一些时间整理了下思路,那么如何实现给所有的async函数添加try/catch呢?async如果不加 try/catch 会发生什么事? // 示例 async function fn() { let value =...

程序员成长指北 330

在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案

本文主要介绍了在claude code中使用glm模型出现Unable to connect to Anthropic services的解决方案,希望能对使用claude code的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 13万+

ES6 | 箭头函数于方法扩展

4、不能使用yield命令,因此箭头函数不能用作 Generator 函数。三个点加一个参数名,注意先后顺序不能换,rest参数不能作为第一个参数。arguments参数对象,是函数里自带的变量,不需要声明。2、不能作为构造函数 没有prototype属性。

千禧年无敌优香大王的博客 700

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ES6 --》函数扩展以及箭头函数讲解

箭头函数没有自己的this对象不可以当做构造函数,即不能对箭头函数使用new命令,否则报错不可以使用arguments对象,该对象在函数体内不存在,如需使用用rest函数代替不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

ztK63LrD的博客 1073

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ES6基本语法之扩展运算符、解构赋值、箭头函数

扩展运算符[...]会把剩余的未被解构赋值的全部获取到,因此d的值为[ 11, 999 ],h的值为{ f: 4, i: 6, j: 7 },e和f1变量名和属性名不同,无法获取到值,因此为undefined。通常情况下,定义了默认值的参数,应该是函数的尾参数,此时函数的length属性将返回没有指定默认值的之前的参数个数。(3)方法中返回一个箭头函数:此时箭头函数的外部作用域是sayName方法,因此箭头函数this的指向就是sayName方法this的指向,sayName方法this指向对象obj。

叶子yes的博客 1790

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

es6语法03-函数之扩展运算符和箭头函数

目录 1.扩展运算符... es5 es6使用扩展运算符 箭头函数 1.扩展运算符... //剩余运算符 允许把多个独立的参数合并到一个数组中 一般用在函数的形参上 //扩展运算符 将一个数组分割,将各个项作为分离的参数传给函数 // const maxNum = Math.max(20, 30); // console.log(maxNum); es5 //1.处理数组中的,使用apply const arr = [10, 2, 3, 4, 51, 4, 5, 6]; c

m0_61547956的博客 177

ES6 函数扩展 箭头函数

ES6 总结(三) 函数扩展 1、默认参数与不定参数 1)默认参数 基本用法: function fn(name,age=17){ console.log(name+","+age); } fn("Amy",18); // Amy,18 fn("Amy",""); // Amy, fn("Amy"); // Amy,17 注意点:使用函数默认参数时,不允许有同名参数。 // 不报错 function fn(nam

qiqiyiyi_的博客 272

ES6新增语法 + 内置对象扩展 + 箭头函数

文章目录ES6语法 ES6语法 ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范

qq_53283188的博客 771

ES6入门(五)函数的扩展(箭头函数)

一.函数的扩展 1函数的参数指定默认值 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法 ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // He...

吴小花的博客 322

es6箭头函数、参数、扩展运算符(es6学习笔记02)

前言:本篇主要学习es6的箭头函数、函数参数默认值设置、rest参数、扩展运算符。 一、箭头函数及其声明特点 1.1声明一个函数 //老方法去声明函数 let fn =function(){ } //用箭头函数去声明函数 let fn(a,b) => { //变量可以放在小括号里面 return a+b; } //调用函数 let result = fn(1,2); console.log(result); 1.2箭头函数的特点 (1)this是静态的,this始终指.

sandy_star 437

es6 箭头函数 rest参数 扩展运算符

Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call,bind改变指向无效) 不能作为构造实例化对象 不能使用arguments变量 箭头函数简写( 1,省略小括号,当形参只有一个的时候 2,省略花括号,当代码体只有一条语句的时候,此时return必须胜率 ...

m0_57479235的博客 245

ES6 箭头函数+...剩余参数+...扩展运算符

箭头函数 箭头 => 函数 在ES6中,可以使用箭头函数代替常规函数 A.参数列表 //1.没有参数 //es5 // function fn() { // console.log('hello world'); // }; // var fn = function () { // console.log('hello world'); // };

weixin_49230250的博客 1359

es6 函数扩展,参数作用域和箭头函数

函数的扩展 函数参数的默认值 基本用法 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '')...

会飞的小鹿 610

ES6学习总结之函数变化(函数默认参数,扩展运算符,箭头函数)

函数变化1.函数默认参数:之前:function show(a,b){a = a||"欢迎您"; //默认参数为“欢迎您”b = b||"小明"; //默认参数为"小明"console.log(a,b);}show("welcome","xaioming"); //welcome xiaomingshow(); //欢迎您 小明ES6:function show(a=‘欢...

sh435367384的博客 783

ES6箭头函数、rest参数、扩展运算符、Symbol的使用

简化对象写法 ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法,这样更简介。 在ES5中创建对象的写法: let name = "江流儿" let showName = function(){ console.log("name:",this.name); } const People = { name: name, showName: showName, func: function(){ console.log("正在西游的路上!")

1900's 88 keys的博客 2130
上一篇: ES6 let与const以及变量的解构赋值
下一篇: vue调试工具的安装与使用(vue-devtools)
不秃头码农
博客等级 码龄6年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值