es6学习记录之函数扩展
前言
最新在看阮一峰老师的es6,很多时候看不懂别人代码,有些写法不知道是什么意思只能靠猜...所以还是要把es6这些基础的东西过一遍,特意记录一下学习过程方便以后查阅复习.
函数参数的默认赋值
//默认赋值
function defaultValue(x = 10) {
console.log(x);
}
defaultValue() //10
defaultValue(50) //50
说明:这里的意思是如果不传参数那么x默认等于10,如果传参X则为正常参数 这个写法以前写分页的时候见过我还傻乎乎的觉得别人写错了,我现在的处理方式都是在定义data的时候就把默认数据写好,有了默认参数基本上可以避免这样做.
rest 参数
ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
function add (...values){
console.log(values); //[1,2,3,6,4]
}
add(1,2,3,6,4)
注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
function add(...values, ca) { //报错Rest parameter must be last formal parameter
//报错 Rest参数必须是最后一个形参
}
add(1, 2, 3, 6, 4)
箭头函数
let ad = ca => 5 //只有一行可以省略大括号表示直接return
// 等同于
function ad(ca) {
return 5
}
// 如果参数多或者要省略那么可以
let ca = () => 5
// 如果函数体内要更多的操作要加上大括号
let cpd = (a,b) => {
let addb = a+b
return addb
}
console.log(cpd(1,2));//3
Function.prototype.toString()
会返回该函数本色甚至注释
function ad (){
// 是否显示
console.log('测试数据');
}
let ca = ad.toString()
console.log(ca);
尾调优化
简单说就是一个函数是另外一个函数的最后一步
function f(x) {
return g(x);
}
下面三种情况都不算尾调用
// 情况一
function f(x) {
let y = g(x);
return y;
}
// 情况二
function f(x) {
return g(x) + 1;
}
// 情况三
function f(x) {
g(x);
}