## 函数扩展
> 1.函数参数的默认值
2.rest 参数
3.name 属性
4.箭头函数
### 函数参数的默认值
~~~
function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
~~~
### rest 参数
~~~
function add(...values) {
let sum = 0;
for (var val of values) {
sum += val;
}
return sum;
}
add(2, 5, 3) // 10
~~~
### name属性
~~~
function foo() {}
foo.name // "foo"
~~~
### 箭头函数
~~~
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;
};
~~~
* 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
* 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
* 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
### 课后习题
1.下面的代码有什么问题,指出并修改
~~~
function a (...b,c,d) {
// code..
}
~~~
~~~
function a (x=2,x,y) {
// code ...
}
~~~
2.下面代码执行后的结果是什么?
~~~
var a = function b () {}
console.log(a.name);
~~~
~~~
var s = [1,2,3,4, ...[5,6,7,8]];
console.log(s);
~~~
~~~
var s = (x) => x+1;
console.log(s(2));
~~~
- Less
- 课程规划
- Less概述
- 变量
- 混合
- 嵌套
- 继承
- 导入
- 函数
- 其他
- 实战
- ES6
- 课程规划
- ES6概述
- let和const命令
- 变量的解构赋值
- 字符串扩展
- 函数扩展
- 数组扩展
- Set和Map数据结构
- Symbol
- Generator 函数
- Promise对象
- Class语法
- Module 的语法
- ES7和ES8
- 实战
- VUE
- 课程规划
- vue概述
- vue实例
- 模版语法
- 计算属性和侦听器
- Class和Style的绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 过渡和动画
- 自定义指令
- 过滤器
- 响应式原理
- 实战课程
- Node
- 课程规划
- 课程概述
- node入门实例
- 模块系统
- 回调函数
- 全局对象
- 常用模块介绍
- 常用模块介绍-1
- 常用模块介绍-2
- 常用模块介绍-3
- npm使用
- express的使用
- express的使用-1
- webpack基础
- 实战
- 微信小程序
- 课程规划
- 课程概述
- 基本配置和生命周期
- wxml模版
- wxss
- wxs
- 组件
- 微信API
- 自定义组件开发
- 实战小程序
- Element
- 课程规划
- 课程概述
- 特性介绍
- 组件介绍-基础组件
- 组件介绍-表单组件
- 组件介绍-数据展示组件
- 组件介绍-提示组件
- 组件介绍-导航组件
- 组件介绍-其他组件
- 综合案例