前言
【前端面试必知(JS)|【前端面试必知】ES6中函数新增了哪些扩展】本系列主要整理前端面试中需要掌握的知识点。本节介绍ES6中函数新增的扩展。
文章目录
- 前言
- 一、参数
- 二、属性
-
- 1、length属性
- 2、name属性
- 三、作用域
- 四、严格模式
- 五、箭头函数
一、参数
- 允许为函数的参数设置默认值
- 函数的形参是默认声明的,不能使用let或const再次声明
- 参数默认值可以与解构赋值的默认值结合起来使用
- 参数默认值应该是函数的尾参数,如果不是非尾部的参数设置默认值,实际上这个参数是没法省略的
- length将返回没有指定默认值的参数个数;
- rest 参数也不会计入length属性;
- 如果设置了默认值的参数不是尾参数,那么length属性也不再计入后面的参数了
- name属性返回该函数的函数名;
- 如果将一个具名函数赋值给一个变量,则 name属性都返回这个具名函数原本的名字;
- Function构造函数返回的函数实例,name属性的值为anonymous;
- bind返回的函数,name属性值会加上bound前缀
let x = 1;
function f(y = x) {
// 等同于 let y = x
let x = 2;
console.log(y);
}f() // 1
四、严格模式 只要函数参数使用了默认值、解构赋值、或者扩展运算符,那么函数内部就不能显式设定为严格模式,否则会报错
// 报错
function doSomething(a, b = a) {
'use strict';
// code
}// 报错
const doSomething = function ({a, b}) {
'use strict';
// code
};
// 报错
const doSomething = (...a) => {
'use strict';
// code
};
const obj = {
// 报错
doSomething({a, b}) {
'use strict';
// code
}
};
五、箭头函数
- 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分;
- 如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回;
- 如果返回对象,需要加括号将对象包裹
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
var sum = (num1, num2) => { return num1 + num2;
}let getTempItem = id => ({ id: id, name: "Temp" });
注意:
- 不改变this 的指向
- 不能做构造函数
- 不能使用arguments对象
- 不可以使用yield命令
推荐阅读
- vue.js|vue跨域和拦截器的配置
- javascript|Fabric.js 上划线、中划线(删除线)、下划线
- Laravel|Laravel 博客开发|使用 Blade 设置布局模版
- JavaScript进阶必会的手写功能
- 呵呵,JavaScript 真好玩(苦笑脸)
- java|Spring Boot 面试杀手锏(自动配置原)
- spring|Spring Boot 面试杀手锏(自动配置原理)
- 面试|SharDingJDBC-5.1.0按月水平分表+读写分离,自动创表、自动刷新节点表
- spring|Spring Boot常见面试题及答案