今天小编给大家分享一下JavaScript ES6的函数怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
之前的写法:
function count(x, y) {
return x + y;
}
count(3);//因为只传递了参数x,y的默认值为undefined
//undefined + 3返回NaN
function count(x, y) {
x = x || 0;
y = y || 0;
return x + y;
}
count(3);//3
function count(x, y) {
x = x??0;
y = y??0;
return x + y;
}
count(3);//3
ES6写法:
ES6的写法简洁易读,能够让其他开发者快速了解参数类型,是否可省等信息,也不会对函数体代码造成过多负担,有利于后期优化重构
function count(x = 0, y = 0) {
return x + y;
}
count(3);
注意事项:
1.使用默认参数,在函数体内不能重新命名同名变量
function count(x = 0, y = 0) {
let x;//报错
const y;//报错
}
参数默认值不是传值的,而是每次都重新计算默认表达式的值,也就是说参数默认值是惰性求值的
let num = 1;
function count(x = num + 1, y = 0) {
return x;
}
count();//2
num = 99;
count();//100
参数也可以作为默认值,但是要注意顺序
正确示例:
function fn(x = 10, y = x) {
console.log(x, y);
}
fn(20);//20 20
fn();//10 10
错误示例:
function fn(x = y, y = 10) {
console.log(x, y);
}
fn();//报错
参数默认值为变量时,如果外部作用域有对应变量,那么这个参数就会指向外部变量(即参数的值等于外部变量的值)
let w = 10;
function fn(x = w) {
let w = 20;
return x;
}
fn();//10
注意:
//在()阶段,x已经赋值后,再改变w的值,也无法改变x的值
let w = 10;
function fn(x = 2) {
w = 20;
return x;
}
fn();//10
ES6引入reset
参数(形式为…变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了
reset参数搭配的变量是一个数组,该变量将多余的参数放入数组中
类似解构赋值,以后就不用call来使arguments
调用数组方法了
function count(...values) {
console.log(values);//[2, 5, 3]
return values.reduce((acc,curr) => acc + curr);
}
add(2, 5, 3);//10
reset参数必须作为函数最后一个参数
function count(...value, a){}//报错
函数的name
属性,返回该函数的函数名
function count(){}
console.log(count.name); //"count"
(new Function).name // "anonymous"
function foo() {};
foo.bind({}).name // "bound foo"
function foo() {};
foo.bind({}).name // "bound foo"
(function(){}).bind({}).name // "bound " // "bound "
(function(){}).name // ""
ES6中规定可以使用“箭头”(=>)定义函数
------------正常函数-------------
function count(x, y) {
return x + y;
}
------------箭头函数-------------
let count =(x, y) => x + y;
函数体中可以直接书写表达式
let count = (x, y) => {
y = 100;
x = x * y;
return x + y;
}
count(3, 4);//400
()中书写表达式,书写多个短语语句,最后一个“,”之后的值为返回值
let count = (x, y) => (x = 100, y = 10, x + y);
count(3, 4);//110
{}中书写多行语句
//报错 会将{}识别为函数体
let count = id => {id: id, name: "yunjin"};
//不会报错
let count = id => ({id: id, name: "yunjin"});
以上就是“JavaScript ES6的函数怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。