ES6 函数默认值与作用域

JavaScript全解析——ES6函数中参数的默认值和解构赋值 ES6允许按照一定的模式,从数组或对象中提取值,给变量进行赋值,称为解构赋值。当你起了别名以后, 原先的键名不能在当做变量名使用了, 需要使用这个别名。函数的默认值是给函数的形参设置一个默认值, 当你没有传递实参的时候来使用。直接在书写形参的时候, 以赋值符号(=) 给形参设置默认值就可以了。给函数的形参设置一个默认值, 当你没有传递实参的时候, 使用默认值。会按照数组的索引依次把数组中的数据拿出来,赋值给对应的变量。数组怎么写, 解构怎么写,把数据换成变量。快速的从数组拿到数组中的数据。 阅读详情

作用域

函数参数默认值 实际上形成了一个单独的作用域,举个栗子:

    let foo = 'outer';

    function bar(func = () => foo) {
        let foo = 'inner';
        console.log(func());
    }

    bar(); // outer

在bar 中 的函数参数中的 foo 指向的是bar 中的foo,但是bar 中没有定义foo,所以向上指向的是全局的foo (outer)
如果在bar 中传入参数 foo, 那么结果就不一样了,栗子:

    let foo = 'outer';

    function bar(foo, func = () => foo) {
        var foo = 'inner';
        console.log(func());
    }

    bar(1);   // 1

这里需要注意的是 内层foo 的定义不能用let ,因为在bar中已经定义了。

(怎么让foo 等于内层的foo? 这种问题和我们说的没什么太大联系了。一个方法是 不要让2个foo重名就好。)

利用函数默认值的应用

教程上的栗子:

function throwIfMissing() {
  throw new Error('Missing parameter');
}

function foo(mustBeProvided = throwIfMissing()) {
  return mustBeProvided;
}

foo()
// Error: Missing parameter

需要注意的是,默认值总是在没有赋值的情况下调用。所以上述栗子如果foo传值了,那么 throwIfMissing函数不会运行。

es6 函数扩展中参数默认值的作用域:详细解析 深入探讨ES6函数扩展中参数默认值的作用域机制,揭示其背后独特的变量绑定与求值逻辑。通过实例解析理解参数默认值如何形成临时作用域,以及与函数体作用域的交互关系,掌握es6函数扩展带来的行为变化。 阅读详情

相关推荐

7. ES6 函数参数的默认值

ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。另外,一个容易忽略的地方是,参数默认值不是传值的,而是每次都重新计算默认值表达式的值。也就是说,参数默认值是惰性求值的。

技术博客 452

Es6函数默认参数作用域详解

es5中只有两种作用域,一个是全局作用域,另外一个是函数作用域,这个大家应该都知道,es6中多了个块级作用域(这里不多作解释,不懂的自己去找资料),最近看es6发现函数默认参数会产生作用域,发现有点绕,查了些资料,把自己的思路和推断写下来(个人理解,勿喷,愿意接受指正)。 es6默认参数作用域 首选我们来看个例子 例子1: var x = 1; function foo(x, y = functi...

1970

ES6中参数的默认值语法介绍

ES6允许为函数参数设置默认值,即直接写在参数定义后面。下面篇文章主要介绍了ES6中参数默认值语法的相关资料,对大家具有一定的参考价值,需要的朋友下面来一起看看吧。

ES6函数参数的默认值

ES6函数参数的默认值

m0_67134595的博客 2738

面试题-手撕NMS(非极大值抑制)

非极大值抑制(Non-Maximum Suppression,NMS)是一种常用于目标检测和计算机视觉中的算法,用于去除重叠的边界框,保留最可能是真实目标的边界框。其核心就是对一组检测框,找出其中属于同一个类别且分数最高的那个框,然后把和这个框的IOU值大于阈值的那些框都删掉。

zhaoyqcsdn的博客 1109

深度学习环境搭建以及DeepLabCut安装过程

文章目录 一、查询电脑硬件 安装GeForce驱动程序 二、环境搭建与软件安装 1.安装CUDA运算平台软件 2.安装cuDNN支持包 3.配置环境变量 三、 DeepLabCut环境配置 1.安装Anaconda 2.创建容器环境 3.激活容器环境 4.安装TensorFlow 5.验证TensorFlow是否安装成功 6...

m0_51136557的博客 3159

ES6:函数参数默认值

1. 逻辑或( || )实现默认值 在es6之前,逻辑或可以做到函数的参数设置默认值: function showName(name) { var n = name || 'Tom'; console.log(n); } showName();//Tom 逻辑或具有一个隐藏的特性,它能够找到第一个真值表达式(即不为false)并返回它 var name = null || 'Tom' || ...

weixin_43856797的博客 3967

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

主流几个JDK版本:JDK 8、JDK 11、JDK 17 和 JDK 21 的区别

技术分享 1728

ES6-函数的默认值,rest参数以及扩展运算符的介绍

ES6引入rest参数,用于获取函数的实参,用来代替arguments。1形参初始值,具有默认值的参数,一般位置要靠后(潜规则)[...] 扩展运算符能将数组转换为逗号分隔的参数序列。ES6允许给函数参数赋值初始值。rest参数必须放到参数最后。3.将伪数组转为真正的数组。ES5获取实参的方式。ES6的rest参数。

qq_61658398的博客 222

知识图谱大模型系列之 12 LLM 知识图谱构建器:从零到 GraphRAG 使用 LLM 知识图谱生成器在 GenAI 应用中提取和使用知识图谱(教程含源码)

为了更深入地了解 LLM 知识图谱构建器,GitHub 存储库提供了大量信息,包括源代码和文档。此外,我们的文档提供了详细的入门指南,而GenAI 生态系统则提供了有关可用更广泛工具和应用程序的进一步见解。

iCloudEnd的博客 2039

第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

🥏第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3872

ES6函数扩展, 箭头函数, 函数参数默认值作用域

添加一个文章摘要

yangyang_A的博客 548

FPGA开发中的操作系统

在FPGA开发中,操作系统起着关键的作用,它负责任务管理、资源管理、中断处理和设备驱动程序等功能。在实际的FPGA开发中,可以选择使用现有的操作系统,如MicroC/OS-II、FreeRTOS等,或者根据具体需求自行设计和开发操作系统。在FPGA(可编程逻辑门阵列)开发中,操作系统扮演着关键的角色,为硬件设计师提供了一种有效的方式来管理资源、调度任务并实现系统级功能。本文将介绍FPGA开发中的操作系统概念,并提供一个简单的示例代码来说明如何在FPGA平台上实现一个基本的操作系统。

CqpFsharp的博客 1163

飞牛fnNAS搭建Web网页版OFFICE(WPS)软件

本文介绍了如何在飞牛NAS上通过Docker容器部署WPS Office办公软件。主要内容包括:启用Docker服务、准备项目文件夹结构、使用Compose方式构建容器、解决端口冲突问题、配置中文输入法和字体库,以及通过ZeroTier实现远程访问。文章详细说明了每个步骤的操作方法,包括容器启动、输入法设置、字体添加和文件存储位置配置。最后还介绍了使用ZeroTier内网穿透技术实现远程访问NAS上WPS服务的方法,让用户可以在不同设备上随时编辑NAS中的文件。整个部署过程完整清晰,为NAS用户提供了便捷的

dgnankai的专栏 1705

uniapp中使用canvas生成海报,并下载保存到手机相册

如下图,是在H5中,canvas生成后的效果,首先说明,H5不支持返回图片的临时路径,不能用于保存,APP端生成成功后,会返回图片的临时路径用来保存到相册。本地测试,用的网络图片,没有出现跨域的问题,APP端也正常显示。 完整代码:可以将整个代码复制到你得uniapp项目中直接运行。代码中做了详细的注册,关于API的用法,这里只标注的简单的提示,具体还是参考 官方链接uniapp-canvas吧 <template> <view class="demo"> <c.

sunluyi的博客 3万+

ES6—带默认值的函数参数及其作用域

在学习ES6函数一章时,发现了一个有意思的现象,原文描述如下: 这段话主要state了3个事实: ①函数参数有默认值时,会在声明初始化阶段形成一个单独的作用域 ②这个作用域在初始化结束后消失 ③没默认值的情况下,没有①②的现象发生。 这就很有意思了,我们一般说函数作用域,一般就是和全局作用域、局部作用域相爱相杀,这下来了个“声明时作用域”,更热闹了,这3者之间到底什么关系呢? 让d...

weixin_30660027的博客 132

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

js学习1---定义变量预解析,作用域,函数预解析,es6行参默认值,匿名函数,箭头函数

1.1:两种定义变量的方式区别 通过var定义变量,可以重复定义同名的变量,并且后定义的会覆盖先定义的 如果let定义变量,“相同作用域内”不可以重复定义同名的变量 1.2:是否能够先使用后定义 var可以先使用 后定义,预解析 let不可以,报错,不会预解析 1.3:能否被{}限制作用域 将var定义的变量放到一个单独的{}里面,还是一个全局变量 将let,是一个局部变量。 在js中{}外面的作用域,作为全局作用域 在js中函数后面{}的作用域,为局部作用域。 在es6中只要{}没有

AngelQ 293

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

了解es6特性(1): 参数默认值,块级作用域,箭头函数,模版字符串

1、参数默认值 在JS中创建一个函数,首先传递3个参数,如果确定第一个和第二个,第三个参数的值不确定,es6中新的特性可以将第三个参数赋上一个原始值;调用时如果有新参数传入,会自动改变成新参数。 function sum(a,b,c=0){//c可以设置一个原始值 console.log(a+b+c); } sum(1,2,3);//结果为6 2、块级作用域 JS中var声明赋值变量在代码运行时会...

weixin_34500944的博客 225

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【ES6】JavaScript函数-参数的默认值-与解构赋值的结合使用-对arguments的影响-默认参数作用域与暂时性死区

文章目录1. 形参初始化2. 与解构赋值结合使用参考资料 1. 形参初始化 ES6 之前,不能直接为函数的参数指定默认值,只能这样做 function log(x, y) { if (typeof y === 'undefined') { y = 'World'; } console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China ES6 允许为函数的参数设置默认值,即直接写在参数

YK菌的博客 617

ES6 函数参数(默认值的设置,默认值位置,参数作用域),函数的2个属性(name和length),箭头函数的4大注意事项

1.函数参数的默认值 ES5,默认值的写法: function log(x, y) { y = y || 'World'; // 改进为if (typeof y === 'undefined') { y = 'World';} console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World ES6 允许为函数的参数设

zz2230633069的博客 1227

ES6——函数参数默认值

ES6 之前,不能直接为函数的参数指定默认值,ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。 function fun(x = 'Hello'){ console.log(x); } fun(); //Hello fun('Hi') //Hi 参数变量是默认声明的,所以不能用let或const再次声明。 function fun(x = 0){ let x = 1; ...

瓜冬瓜的博客 1208

ES6标准入门(阮一峰)学习笔记05第7章函数的扩展,指定默认值,与解构赋值默认值结合使用,参数默认值的位置,函数的length属性,作用域,rets参数数组,name属性,箭头函数,尾调用,尾递归

1、基本用法 es6,函数参数可以指定默认值 <script> function fn(x,y=5){ console.log(x) console.log(y) } fn(10,50)//10 50 fn(19)//19 5 fn(50,'')//50 </script>

weixin_43745804的博客 171

ES6标准---【三】【学习ES6看这一篇就够了!!!】

letconst但是使用“”可以再次声明即:“参数默认值是惰性求值的。

zheshiyangyang的博客 1464

ES6笔记 4.解构赋值、函数默认值、数组解构、对象解构

ES6笔记 3

syhdqdzs的博客 202

ES6(二)函数扩展 之 函数参数默认值

ES6标准关于函数部分的扩展,主要涉及以下几个方面: 1)函数参数默认值 2)函数参数解构赋值 3)函数剩余参数rest参数 4)箭头函数 5)关于严格模式 1.函数参数默认值 1)在ES6之前不能为函数的参数指定默认值, ES6允许为函数的参数设置默认值(即参数值直接写在参数定义的后面) 2)参数变量是默认声明的,不能用let const再次声明 3)使用参数默认...

qq_33345511的博客 533
上一篇: ES6标签模板
下一篇: 函数的严格模式
Aaron灬
博客等级 码龄9年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值