ES6-Function
2016-06-23 10:18
232 查看
Function
箭头函数
ES6中对于函数的扩展最吸引人的莫过于箭头函数啦,不多说,先学会再说。函数体内的this对象,是定义时所在的对象,而不是使用时所在的对象,这个特性与正常函数不同。
// 箭头定义函数 function foo() { setTimeout(() => { console.log('id:', this.id); // this指向{id:42}这个对象 }, 100); } var id = 21; foo.call({ id: 42 }); // 42 // 普通定义函数 function foo() { setTimeout(function(){ console.log('id:', this.id); // this指向window }, 100); } var id = 21; foo.call({ id: 42 }); // 21
不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。没有内部this。不过都ES6了,想要定义类,直接使用class不就得了
var Demo = (foo) => console.log(foo); new Demo('foo') // 报错啦 testFunc is not a constructor
不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数(...args)代替。
var demo = (foo) => console.log(arguments); demo() // 报错 arguments is not defined // 可以用Rest写法代替 var demo = (...args) => console.log(args); demo('a') // ["a"]
不可以使用yield命令,因此箭头函数不能用作Generator函数。待研究^^!!
参数默认值
尾参数设置默认值let log = (x, y = 'World') => x + ' ' + y; log('hello', 'xiaoming'); // hello xiaoming log('hello'); // hello World
参数解构赋值
参考变量的解构赋值函数的length属性
返回未设置默认值的参数的个数((x, y, z = 1) => 1).length // 2
如果设置默认值的参数不是尾参数,设置默认值的参数后面的未设置默认值的参数也不计入length
((x = 1, y, z) => 1).length // 0
作用域
var x = 1; function foo(x, y = x){ console.log(y); } foo(2) // 2
let x = 1; function foo(y = x){ let x = 2; console.log(y); } foo() // 1
rest参数
rest参数后面不能再有参数(a, ...b) => 1 (a, ...b, c) => 1 // 报错
相关文章推荐
- Filesystem Hierarchy Standard (Unix, Linux etc)
- excel导出
- 获取mp3的精确时长(毫秒级别)
- Android 数据存储(二)之SharedPreferences存储
- Java上传下载excel、解析Excel、生成Excel的问题
- Android中Bitmap和Drawable
- 线程的五大状态
- Jenkins安装使用
- 旧时光
- MFC 一般属性页对话框的创建和显示
- linux系统备份
- 12306火车票查询
- 【JavaScript】内置对象
- windows下安装redis以及测试 Window 下安装
- ES6-Class
- (OK) Android adb连接VirtualBox方式
- 浅析Bootstrap验证控件的使用
- linux查看tcp的状态命令:
- LDD
- [codevs1742] 爬楼梯