【ES6】—【必备知识】—函数的参数

news2024/11/26 10:44:19

在这里插入图片描述

一、参数的默认值

1. ES5 设置默认值

function foo (x, y) {
 	y = y || 'world'
	console.log(x, y)
}
foo('hello', 'xiaoxiao')
foo('hello', 0)
// hello xiaoxiao
// hello world

PS: 使用 || 的方式设置默认值不严谨, 0、undefined、‘’ 这些参数都会被判定为false

2.ES6 设置默认值

  1. 设置默认值
function foo(x, y = 'world') {
	console.log(x, y)
}
foo('hello', 0)
// hello 0
  1. 函数内部, 和参数同名的变量,不能再次声明
function foo (x, y) {
	let x = 1
}
// Identifier 'x' has already been declared
// x 已被声明
  1. 函数参数不能重名
function foo (x, x, y = 5) {
}
foo()
// Duplicate parameter name not allowed in this context
// 此上下文中不允许出现重复的参数名称
  1. 参数的默认值 一定要放在参数的最后面
function foo (x, y =5 , z) {
	console.log(x,y,z)
}
foo(1,,8)
// SyntaxError: Unexpected token ','

PS: 因为形参放在前面,实参传递时,无法传入空值

function foo (x, y , z =5) {
	console.log(x,y,z)
}
foo(1,8)
// 1 8 5

二、与解构赋值结合

1. 当使用解构赋值时,实参结构要和形参的结构匹配

function foo({x, y = 5}) {
	console.log(x, y)
}
foo({})
// undefined 5
foo({x: 1})
// 1 5
foo({x: 1, y : 2})
// 1 2
foo()
// Cannot destructure property 'x' of 'undefined' as it is undefined.
// 无法解构未定义x变量

2. 形参对象的属性的默认值和解构赋值联合使用

function ajax(url, {
	body = '',
	method = 'GET',
	headers = {}
} = {}) {
	console.log(method)
}
ajax ('http://www.baidu.com', {
	method: 'POST'
})
// POST

三、length属性

  1. 函数的长度 = 没有指定默认值的参数个数
function foo(x, z, y) {}
console.log(foo.length)
// 3
function foo1(x, z, y =5) {}
console.log(foo1.length)
// 2
function foo2(x, z=5, y=6) {}
console.log(foo2.length)
// 1
function foo3(x=1, z=5, y=6) {}
console.log(foo3.length)
// 0

四、作用域

1. 函数作用域

let x =1
function foo(x, y = x) {
	console.log(y)
}
foo(2)
// (x, y=x) , 括号形成了一个作用域,作用域里面 let x , y = x (作用域里面的x)
// 2

2. 作用域链寻找

let x =1
function foo(y = x) {
	let x = 2
	console.log(y)
}
foo()
// (y = x) 括号形成了一个作用域,当前作用域里面无法找到x 的值,往上一级作用域中寻找x的值
// 1

PS: 在不同的作用域类,可以使用let声明相同的变量

function foo(y = x) {
	let x = 2
	console.log(y)
}
foo()
// (y = x) 括号形成了一个作用域,当前作用域里面无法找到x 的值,往上一级作用域中寻找x的值
// x is not defined

五、函数的name属性

1. 匿名函数

console.log((new Function).name)
// anonymous 匿名函数

PS: 谷歌首页搜索页面有做安全策略拦截, 建议使用百度首页的控制台测试

2. 边界 + 函数名称

function foo(x, y) {
	console.log(this, x, y)
}
console.log(foo.bind({}).name)
// bound foo

3. 边界

console.log((function(){}).bind({}).name)
// bound 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装VSCA 过程中的报错

安装VSCA 过程中的报错:无法获取目标服务器证书的SSL指纹: 解决方案三点: 防火墙 网络IP,网关 使用ping命令或者telnet检查网络是否可达 网络端口没有开启 有无启用 另外最新版本有漏洞 建议换一个常用版本

NestJS 中的 gRPC 微服务通信

想象一下,你回家过节,你的家人决定聚会。而不是让一个人做所有的烹饪,每个人都同意带上他们擅长制作的特色菜。目标是通过组合所有这些菜肴来制作一顿完整的饭菜。你同意做鸡肉炒饭,你哥哥做甜点蛋糕,妹妹做沙拉。 每…

SV-7101T网络音频广播终端使用手册

1.1、产品简介 感谢你使用我司的SV-7101T网络音频播放终端,SV-7101T能处理tcp/ip网络音频流,提供一路线路输出。主要用于公共数字广播,媒体教学,报警等需要数字音频的领域。 SV-7101T具有10/100M以太网接口,支持最高4…

高忆管理:巨无霸IPO来了!年内全球最大?英伟达曾400亿美金“求亲”

当地时间8月21日,美股三大股指涨跌纷歧,纳指连跌四日之后反弹。截至收盘,道指跌0.11%,标普500指数涨0.69%,纳指涨1.56%。本周市场关注美联储主席鲍威尔周五在杰克逊霍尔央行年会上的说话。 周一美国国债收益率攀升。美…

Power BI 如何做页面权限控制

同一个PBI报告中有多页, 有时我们需要将其中一些页面开给一部分人, 一些页面开给另一部分人 比如A用户只允许查看报告的第1,2页,B用户只能查看第3页等 1 导入页面控制权限表 2 创建角色 3 设计封面页 选择筛选器视图, 将页面字段拖进去, 将筛选器设置成单选选择, …

2023年上半年,吉利汽车销量增长13.1%,同比增长38%

根据吉利汽车发布的中期业绩报告,2023年上半年,吉利汽车取得了令人瞩目的销售和收入增长。该公司在中国乘用车市场表现出色,销量增长了13.1%,达到了69.4万辆,超过了整体市场增长率(8.8%)。 这主…

ebay小夜灯亚马逊UL1786测试报告

小夜灯UL报告UL1786测试标准亚马逊美国站销售办理 UL认证,很多人对它熟悉却又陌生。出口美国的时候,很多人都听过UL认证。但是因为UL认证在美国属于非强制性的认证,对于清关没有影响,所以有很多卖家不会深入了解它。其实相关产品…

Python实现SSA智能麻雀搜索算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

​LeetCode解法汇总849. 到最近的人的最大距离

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个数…

互联网医院开发|医院叫号系统提升就医效率

在这个数字化时代,互联网医院不仅改变了我们的生活方式,也深刻影响着医疗行业。医院叫号系统应运而生,它能够有效解决患者管理和服务方面的难题。不再浪费大量时间在排队上,避免患者错过重要信息。同时,医护工作效率得…

QT基础教程之三信号和槽机制

QT基础教程之三信号和槽机制 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目…

Python实现SSA智能麻雀搜索算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

2023-08-22 Unity Shader 开发入门2 —— Shader 开发介绍

文章目录 一、必备概念1 计算机图形程序接口2 图形接口程序与其他概念的联系 二、Shader 开发1 Shader2 Shader 开发3 需掌握的内容 一、必备概念 1 计算机图形程序接口 ​ 计算机图形程序接口(Graphics API)是一套可编程的开放标准,不论 2…

我和ChatGPT吟诗作对《落凡尘》

《落凡尘》 萌生泥里追梦去,归时不做蓬蒿人。 人间在世须进取,哪得几回落凡尘。 我和ChatGPT吟诗作对。

高忆管理:市盈率市净率市销率关系?

市盈率(Price-Earnings Ratio,简称P/E Ratio)、市净率(Price-to-Book Ratio,简称P/B Ratio)和市销率(Price-to-Sales Ratio,简称P/S Ratio)是常用的股票估值目标&#xf…

【数据分享】2012-2022年全球范围逐年NPP/VIIRS夜间灯光数据

夜间灯光数据是我们在各项研究中经常使用的数据!本次我们给大家分享的是2012-2022年全球范围的逐年的NPP/VIIRS夜间灯光数据,数据格式为栅格格式(.tif)。该数据来自于NCEI国家环境信息中心,近期该网站更新了2022年的夜间灯光数据,…

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件

着业务的发展每个企业都将产生越来越多的数据,然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力,数据分析BI(商业智能)成为了现代企业不可或缺的一部分。然而,在数据分析的背后,有…

【HCIP】08.ISIS中间系统

链路状态协议,传递LSA信息ISIS基于数据链路层封装在OSI时,也有自己的网络层地址和自己的路由协议,即ISIS。之前的ISIS支持OSI的网络层地址,是为OSI中的CLNP(无连接网络协议)网络设计的路由协议,…

客户案例:高性能、大规模、高可靠的AIGC承载网络

客户是一家AIGC领域的公司,他们通过构建一套完整的内容生产系统,革新内容创作过程,让用户以更低成本完成内容创作。 客户网络需求汇总 RoCE的计算网络RoCE存储网络1.不少于600端口200G以太网接入端口,未来可扩容至至少1280端口1.…

Linux存储学习笔记

相关文章 Linux 存储系列|请描述一下文件的 io 栈? - tcpisopen的文章 - 知乎 https://zhuanlan.zhihu.com/p/478443978 深入学习 Linux 操作系统的存储 IO 堆栈 - KaiwuDB的文章 - 知乎 https://zhuanlan.zhihu.com/p/636720297 linux存储栈概览 - st…