一、先说一个简单的概念——变量提升:

  通过function+函数名的方式,声明的函数,可以在代码中的任何位置调用;

  

  通过var定义变量的方式,声明的函数,则必须在声明之后进行调用,原因就是在变量定义之前调用时,变量的值为undefined;

  

二、说一个特别重要的概念——函数在定义的时候(不是在调用的时候),就已经确定了函数内部自由变量的作用域;

  上面的概念对于理解this指向特别重要!!!

  1.首先看一个例子:

    

    bar(fn)中,fn函数执行,其this的指向毫无疑问是指向window的,但是bar.call({},fn),改变bar函数的this指向时,fn函数的this指向并没有被改变。这就是因为fn函数的this指向,在fn定义时就已经确定是指向window了,并不会因为调用的函数bar的this指向改变而改变;

  2.直接定义的函数的this指向window:

    结合上面的例子可以发现,函数在定义时this的指向以及确定为指向window,尽管改变了外层函数的this指向,但是内层函数的this依然指向window;

    

    上图可知,内层函数即使在外层函数内部定义,其this指向依旧为window;

  3.通过对象定义的函数的this指向该实例化对象:

    

  4.构造函数内部定义的函数中,this指向该构造函数:

    

  5.箭头函数中this的指向与外层函数的this指向一致:

    

    由上图可知,使用箭头函数,相当于把外层函数的this指向绑定到了内层的普通函数中;

最新文章

  1. 前端开发面试题收集(css部分)
  2. java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)
  3. 第一章 Javscript的数据类型
  4. 再看.net本质(二)
  5. unity 脚本(自定义组件)的事件触发关系
  6. 推荐一款好用的项目管理工具:project
  7. BZOJ 1014 火星人prefix
  8. hibernate两表连接查询
  9. VLAN及Trunk实验
  10. Uni-app中Class绑定与Style绑定
  11. python 开发环境部署
  12. 用JavaScript实现点击左侧列表右侧显示列表内容的方法
  13. Oracle GoldenGate常用配置端口
  14. apache camel 条件路由
  15. sql:Mysql create view,function,procedure
  16. 谈谈对Spring IOC(控制反转)的理解--转
  17. c# excel转换为DataTable
  18. google go语言开发
  19. FusionCharts:tooltip分行显示
  20. 【BZOJ4712】洪水 树链剖分优化DP+线段树

热门文章

  1. Onsen UI 前端框架(二)
  2. 搜索suggestion
  3. js简单省级联动菜单
  4. 关于View Link
  5. WPF之路一:相对路径图片显示
  6. 使用EPPlus读写xlsx文件
  7. (转)POPTEST联合创始人李爱然的“IT培训创业的随想"
  8. 老李分享:开发python的unittest结果输出样式
  9. 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
  10. UTF-8 GBK UTF8 GB2312 之间的区别和关系