【ES6】—函数的参数

news2024/12/22 23:55:38

在这里插入图片描述

一、参数的默认值

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/911185.html

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

相关文章

k8s service (三)

K8s service (三) LoadBalancer类型的Service LoadBalancer和NodePort其实是同一种方式,目的都是向外暴露一个端口,区别在于LoadBalancer会在集群的外部再来做一个负载均衡设备,而这个设备需要外部环境支持的,外部服务发送到这…

企业使用CRM系统的三大理由

CRM系统是一种管理企业与客户关系的软件,它可以帮助企业提高客户满意度、增加销售收入、优化营销策略。可以说,CRM系统是企业数字化转型,实现可持续发展的重要工具。下面我们来说说,推荐企业使用CRM的原因。 1、了解客户需求 客…

细谈Vue中插槽Slots

细谈Vue中插槽Slots 浅谈Vue中插槽Slots1、默认插槽2、后备内容3、具名插槽4、作用域插槽5、代码实践 浅谈Vue中插槽Slots <slot> 元素是一个插槽出口 (slot outlet)&#xff0c;标示了父元素提供的插槽内容 (slot content) 将在哪里被渲染。Vue 组件的插槽机制是受原生…

冠达管理:迎政策利好,数据要素概念爆发,卓创资讯、三维天地等涨停

数据要素概念22日盘中强势拉升&#xff0c;截至发稿&#xff0c;卓创资讯、三维六合“20cm”涨停&#xff0c;深圳瑞捷涨超15%&#xff0c;世纪恒通涨超13%&#xff0c;新炬网络、生意宝亦涨停&#xff0c;中富通涨超8%。值得注意的是&#xff0c;新炬网络已连续两个买卖日涨停…

冠达管理:央行降息是什么意思?央行降息利好什么股票?

为了顺应和刺激经济的发展&#xff0c;央行有时会通过上升和下降利息来平衡。一般降息是在经济不景气的时分调控。那么央行降息是什么意思&#xff1f;央行降息利好什么股票&#xff1f;下面就由冠达管理为我们分析&#xff1a; 央行降息是什么意思&#xff1f; 降息的意思便是…

〔015〕Stable Diffusion 之 模型管理和信息管理插件 篇

✨ 目录 &#x1f388; 模型管理&#x1f388; 添加预览图&#x1f388; 添加详细描述&#x1f388; 模型分组&#x1f388; 下载 Civitai Helper 插件&#x1f388; 插件 Civitai Helper 使用方法 &#x1f388; 模型管理 点击生成按钮下的 显示/隐藏扩展模型 Show/hide extr…

【Terraform学习】使用 Terraform 托管 S3 静态网站(Terraform-AWS最佳实战学习)

使用 Terraform 托管 S3 静态网站 实验步骤 前提条件 安装 Terraform&#xff1a; 地址 下载仓库代码模版 本实验代码位于 task_s3 文件夹中。 变量文件 variables.tf 在上面的代码中&#xff0c;您将声明&#xff0c;aws_access_key&#xff0c;aws_secret_key和区域变量…

人工智能的螺旋式发展历程

人工智能的螺旋式发展历程 人工智能的历史自1956年开始至今&#xff0c;已经有66年的历史。世界人工智能历史可分为三个阶段&#xff0c;从1956年至1976年是人工智能的第一个发展阶段&#xff0c;1976年至2006年是第二个发展阶段&#xff0c;而2006年至今则是人工智能的第三个发…

Spring Boot系统之高可用限流实现解决方案

1.什么是限流 限流是对某一时间窗口内的请求数进行限制&#xff0c;保持系统的可用性和稳定性&#xff0c;防止因流量暴增而导致的系统运行缓慢或宕机。 为什么需要限流 其实限流思想在生活中随处可见&#xff0c;例如景区限流&#xff0c;防止人满为患。热门餐饮需要排队就…

3.Trunc截断函数用法

TRUNC函数用于对值进行截断 用法有两种&#xff1a;TRUNC&#xff08;NUMBER&#xff09;表示截断数字&#xff0c;TRUNC&#xff08;date&#xff09;表示截断日期 (1)截断数字 格式&#xff1a;TRUNC&#xff08;n1,n2&#xff09;&#xff0c;n1表示被截断的数字&#xf…

【LeetCode】买卖股票的最佳时机之k天

买卖股票的最佳时机之k天 题目描述算法描述编程代码 链接: 买卖股票的最佳时机之k天 题目描述 算法描述 编程代码 class Solution { public:int maxProfit(int k, vector<int>& prices) {int n prices.size();k min(k,n/2);vector<vector<int>> f(n,…

【中危】PowerJob 未授权访问漏洞 (CVE-2023-36106)

漏洞描述 PowerJob 是一款开源的分布式任务调度框架。 在 PowerJob 受影响版本中存在错误的访问控制漏洞。由于没有对/container/list接口做鉴权&#xff0c;未授权的攻击者可以构造 appId 参数访问 /container/list接口获取应用容器的标识、运行状态、日志等敏感信息。 漏洞…

packge.json中的browserlistrc配置有什么用?

theme: smartblue 前端开发中&#xff0c;需要考虑前端开发中&#xff0c;需要考虑CSS及JS的兼容性&#xff0c;browserlistrc指定了需要兼容的浏览器。 数据来源 Browserslist 的数据都是来自caniuse.com的。 使用方法 package.json {"browserslist": ["l…

OpenAI首席执行官谈马斯克退出的影响;关于 Stable Diffusion 扩展功能的内容总结

&#x1f989; AI新闻 &#x1f680; OpenAI首席执行官谈马斯克退出的影响 摘要&#xff1a;OpenAI首席执行官萨姆奥特曼在接受采访时表示&#xff0c;埃隆马斯克退出OpenAI给公司带来了巨大震惊&#xff0c;导致奥特曼不得不重新调整生活和时间安排以确保足够资金。OpenAI是…

MPU6050使用心得(简单分享一下)

前言 选用MPU6050做 倾斜检测 功能。 前期准备 开发板&#xff1a;正点原子STM32F103 精英版&#xff08;STM32F103ZET6&#xff09; 模块&#xff1a;GY-521 MPU6050 其他&#xff1a;杜邦线若干、烧录线、FlyMcu、Keil5、正点原子开发板配套的套件&#xff08;TFTLCD&…

智慧农场云养猪平台原来是这样的!

随着数字化和智能化的发展&#xff0c;农业行业也逐渐开始融入互联网技术&#xff0c;其中云养猪平台作为新兴的农业数字化解决方案之一&#xff0c;备受关注。本文将探讨如何开发一款具备专业、思考深度和逻辑性的云养猪平台。 一、前期准备阶段&#xff1a; 1.明确目…

通达信指标公式12:关于股票筹码集中度的分析弊端

筹码的集中度&#xff1a;指的是个股的流通筹码被庄家控制的程度&#xff0c;用来观察一支股票是否有大资金吸筹。如果某只股票流通筹码的30%被庄家所控制&#xff0c;就说明这只股票被轻度控盘了。而当大于50%以上的多数流通筹码被控制的时候&#xff0c;就是高度控盘了。利用…

Python实现SSA智能麻雀搜索算法优化卷积神经网络回归模型(CNN回归算法)项目实战

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

38岁啦:说点什么好呢?

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 1985年的8月21日&#xff0c;农历七月初六。正好今天也是2023年8月21日&#xff0c;农历七月初六。该说点什么好呢? 1985年&#xff0c;我就出生在这里&#xff0c;箭头所指的方向就是我出生的地…

Idea 设置实体类里面的serialVersionUID

private static final long serialVersionUID 8728382276986043874L;选中serialVersionUID &#xff0c;然后使用Altenter&#xff0c;选择随机更改serialVersionUID 的初始值