一、对函数的扩展
1、提供默认参数
function fn(name,age=19){
console.log(name+","+age);
}
fn("es6",18); // es6,18
fn("es6",""); // es6,
fn("es6"); // es6,19
2、不定参数
function f(...values){
console.log(values.length);
}
f(a,b); //2
f(a,b,c,d); //4
二、箭头函数
基本语法
参数 => 函数体
基本用法
var f = v => v;
//等价于
var f = function(a){
return a;
}
f(1); //1
当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块。
var f = (a,b) => {
let result = a+b;
return result;
}
f(6,2); // 8
当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来。
// 报错
var f = (id,name) => {id: id, name: name};
f(6,2); // SyntaxError: Unexpected token :
// 不报错
var f = (id,name) => ({id: id, name: name});
f(6,2); // {id: 6, name: 2}
this对象
this对象,指的是该函数的外层,通过下面的例子体会一下。
var func = () => {
// 箭头函数里面没有 this 对象,
// 此时的 this 是外层的 this 对象,即 Window
console.log(this)
}
func(55) // Window
/
function fn(){
setTimeout(()=>{
// 定义时,this 绑定的是 fn 中的 this 对象
console.log(this.a);
},0)
}
var a = 20;
// fn 的 this 对象为 {a: 19}
fn.call({a: 19}); // 19