JavaScript|JavaScript ES6的函数拓展
目录
- ES6函数拓展
- 函数的默认参数
- reset参数
- name属性
- 箭头函数
ES6函数拓展
函数的默认参数
之前的写法:
function count(x, y) {return x + y; }count(3); //因为只传递了参数x,y的默认值为undefined//undefined + 3返回NaNfunction count(x, y) {x = x || 0; y = y || 0; return x + y; }count(3); //3function 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(); //2num = 99; count(); //100
参数也可以作为默认值,但是要注意顺序
正确示例:
function fn(x = 10, y = x) {console.log(x, y); }fn(20); //20 20fn(); //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
reset参数
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属性
函数的
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|JavaScript ES6的函数拓展】到此这篇关于JavaScript ES6的函数拓展的文章就介绍到这了,更多相关JavaScript ES6 函数 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- ES6基础语法之class类介绍
- ES6基础语法之函数介绍
- ES6基础语法之模块化介绍
- ES6基础语法之对象介绍
- 电脑配件-COMPUTER|电脑配件 - 机械键盘的由来, 与普通键盘的区别以及如何选购及使用维护 - 学习/实践
- 计算机专业用什么轴的键盘,机械键盘什么轴好
- 适合学计算机用的机械键盘,【机械键盘】选购全攻略(一)必备入门小知识
- 华为负一屏的新闻页面删除
- 华为左滑的那个界面怎么设置
- 任务栏不显示打开的窗口,本文教您怎样处理任务栏不显示打开的窗口