2016.06.14廖雪峰JS__学习笔记(函数部分)__P4
来源:互联网 发布:淘宝网天猫女童装裙子 编辑:程序博客网 时间:2024/06/05 03:14
1
闭包
返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
在面向对象的程序设计语言里,比如Java和C++,要在对象内部封装一个私有变量,可以用private
修饰一个成员变量。
在没有class
机制,只有函数的语言里,借助闭包,同样可以封装一个私有变量。
2
Arrow Function(箭头函数)
x => x * x
上面的箭头函数相当于:
function (x) { return x * x;}
如果要返回一个对象,就要注意,如果是单表达式,这么写的话会报错:
// SyntaxError:x => { foo: x }
因为和函数体的{ ... }
有语法冲突,所以要改为:
// ok:x => ({ foo: x })
3
箭头函数和匿名函数有个明显的区别:箭头函数内部的this
是词法作用域,由上下文确定。
下面的例子无法得到预期结果:
var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = function () { return new Date().getFullYear() - this.birth; // this指向window或undefined }; return fn(); }};
现在,箭头函数完全修复了this
的指向,this
总是指向词法作用域,也就是外层调用者obj
:
var obj = { birth: 1990, getAge: function () { var b = this.birth; // 1990 var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象 return fn(); }};obj.getAge(); // 25
如果使用箭头函数,以前的那种hack写法:
var that = this;
就不再需要了。
0 0
- 2016.06.14廖雪峰JS__学习笔记(函数部分)__P4
- 2016.06.13廖雪峰JS__学习笔记(函数部分)__p2
- 2016.06.14廖雪峰JS__学习笔记(对象部分)__P5
- 2016.06.14廖雪峰JS__学习笔记(高阶函数)__P3
- 2016.06.13廖雪峰JS__学习笔记(快速入门部分)__p1
- 2016.06.15廖雪峰JS__学习笔记(JSON)__P7
- 2016.06.19廖雪峰JS__学习笔记(Promise)__P14
- 2016.06.15廖雪峰JS__学习笔记(正则表达式)__P6
- 2016.06.15廖雪峰JS__学习笔记(原型对象)__P8
- 2016.06.15廖雪峰JS__学习笔记(原型继承)__P9
- 2016.06.15廖雪峰JS__学习笔记(class继承)__P10
- 2016.06.15廖雪峰JS__学习笔记(浏览器对象)__P11
- 2016.06.17廖雪峰JS__学习笔记(操作DOM)__P12
- 2016.06.17廖雪峰JS__学习笔记(操作表单)__P13
- 廖雪峰python学习笔记(2——函数)
- 廖雪峰python学习笔记7:函数
- 廖雪峰python学习笔记——函数式编程
- [廖雪峰 - Python2.7教程] 返回函数 - 学习笔记
- Kodi ——6 Controls (2) Fade Label Control
- 定义一个函数subsamp,输入为彩色图像文件名,输出并显示尺寸减半的彩色 图像(原始、水平翻转、垂直翻转、中心区域变红)。必须使用控制语句,在命令窗口成功调用!
- wheel自定义控件,实现城市三级联动,时间选择的功能简单使用
- ajax跨域请求结合springmvc后台代码学习整理
- tty那些事
- 2016.06.14廖雪峰JS__学习笔记(函数部分)__P4
- js实现查找字符串功能
- 中国民航局v1.0.1官方iPhone版
- DRV8301芯片调试总结
- C++中的new与delete
- Adb connection Error:远程主机强迫关闭了一个现有的连接。
- yershop商城系统Thinkphp开发(四)——微信篇4:认证服务号Thinkphp微信支付
- Integer to English Words
- iOS中创建文件目录时候存储路径的一些注意点