小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
- 上一篇讲解了ES6新增语法 本文为扩展篇
- 本文讲解新增函数用法
函数新增
-
允许为函数的参数设置默认值
let fn = (x, y='vike') => { console.log(x,y) } fn('hello') // hello vike fn('hello','world') // hello world -
函数的形参是默认声明的, 不能用let,const再次声明
let fn = (x = 1) => { let x = 0 // 报错 const x = 2 //报错 } -
参数默认值和解构默认值可以结合起来使用
let fn = ({x,y=3}) => { console.log(x,y) } fn({}) // undefined 3 fn({x:2}) //2 3 -
参数默认值应该是函数最后参数设置 如果不是最后参数 则该参数不能省略
let fn = (x=2,y) => { console.log(x,y) } fn() // 2 undefined fn(,3) // 报错 参数无法省略 -
函数属性
- length 属性
- 将返回没有指定默认值的参数个数
let fn = (x) => {} fn.length // 1 let fn1 = (x=1) => {} fn1.length // 0- 如果参数默认值是第一个参数 则后面参数不计入length
let fn = (x=1,y) => {} fn.length // 0- name 属性
- 返回该函数的函数名
let fn = () => {} fn.name // 'fn' (()=>{}).name // '' (new Function).name // anonymous -
作用域
- 一旦设置了函数参数默认值 函数初始化时 就会形成局部作用域
let fn = (x=1) => { console.log(x) } fn() // 1 console.log(x) // x is not defined -
严格模式
- 只要函数使用了默认值 解构赋值 扩展运算符 就不能定义严格模式
// 严格模式 let fn = () => { 'use strict' } // error let fn = (x=1) => { 'use strict' } -
箭头函数
- 使用
=>定义函数
let f = x => f // 等同于 let f = (x) => { return f }- 使用多个参数
let f = (x,y) => x+y // 等同于 let f = (x,y) => { return x+y }结语
- 今日份小知识get~
- 使用