返回

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符

发布时间:2022-11-15 10:20:21 320
# javascript# html# java# java# 数据

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数

函数参数赋初始值

很多语言都支持给函数赋初始值,也比较好理解;

1 形参初始值

先看个常规的:

function add(a, b, c) {
return a + b + c;
}
console.log(add(1, 2, 3)); // 6

如果参数没传够:最后输出 NaN ;

function add(a, b, c) {
return a + b + c;
}
console.log(add(1, 2)); // NaN

这时候,可以给形参来个初始值:可以输出正确的结果;

function add(a, b, c=5) {
return a + b + c;
}
console.log(add(1, 2)); // 8

如果实参我也传够了3个:那就以实参为准;

function add(a, b, c = 5) {
return a + b + c;
}
console.log(add(1, 2, 3)); // 6

具有默认值的参数,一般位置要靠后放;

 

2 与解够赋值结合

function connect({host,port,user,pswd}){
console.log(host); // localhost
console.log(port); // 8080
console.log(user); // root
console.log(pswd); // root
}
connect({
host:'localhost',
port:8080,
user:'root',
pswd:'root'
});

形参也可以使用默认值:

function connect({host ="127.0.0.1",port,user,pswd}){
console.log(host); // 127.0.0.1
console.log(port); // 8080
console.log(user); // root
console.log(pswd); // root
}
connect({
port:8080,
user:'root',
pswd:'root'
});

实参传了,就用实参,实参没传,就用默认值;

 

rest参数

ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments

arguments 获取实参:

function sum(a,b){
console.log(arguments);
}
sum(1,3);

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符_扩展运算符

arguments 不是数组,可以理解为类数组;有些数组的方法是不能使用的;

 

rest 参数的写法:用 3个点加标识符表示形参,这个参数是数组。

function sum(...args) {
console.log(args);
}
sum(1, 3, 5, 7);

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符_扩展运算符_02

返回了数组,就要可以使用数组的方法,如:filter some every map 等方法;

如果参数有多个,而且存在 rest 参数,那么就 rest 参数要放到参数的最后,否则报错;

function sum(a, b, ...args) {
console.log(a);
console.log(b);
console.log(args);
}
sum(1, 3, 5, 7, 9, 11);

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符_rest参数_03

1 给了 a ,3 给了 b, 剩下的都给了  ...args 。

 

扩展运算符

"..." 扩展运算符能将“数组”转换为逗号分隔的“参数序列”。

const mz = ['西游记','红楼梦','三国演义','水浒传'];
function read(){
console.log(arguments);
}
read(...mz); // 相当于: read('西游记','红楼梦','三国演义','水浒传');

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符_rest参数_04

注意这里的 “...” 和 rest 参数的"..." 可一样;rest 参数是放在形参里的; 

看下具体应用:

 

1,数组的合并

之前使用数组的  concat 方法:现在使用 扩展运算符更方便;

const tianwang = ['张学友','刘德华'];
const gangjie = ['李嘉欣','张曼玉'];

// const star = tianwang.concat(gangjie);
const star = [...tianwang,...gangjie]; // 相当于把两个数组展开来,又放在数组里;
console.log(star);

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符_参数默认值_05

 

2,数组的克隆

const fruit = ['apple','orange','banana'];
const myFruit = [...fruit];
console.log(myFruit); // ['apple','orange','banana']

如果有引用数据的话,也是浅拷贝;

 

3,将伪数组转为真正的数组

HTML里有3个div:

<div></div>
<div></div>
<div></div>

JS里获取到这3个 div :

const divs = document.getElementsByTagName('div');
console.log(divs); // 获取到的是个类数组,实际是 Object;
const arrDivs = [...divs]; // 用扩展运算符转换一下,变真正数组;
console.log(arrDivs); // [div, div, div]

Javascript(笔记34) - ES6特性 - 函数参数默认值、rest参数、扩展运算符_rest参数_06

arrDivs 变真正数组,可以使用数组的方法;

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
案例体验HTTP2.0多路复用 2022-11-15 09:49:36