在js中的执行上下文,菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文,今天我们就更进一步的讲解js中的执行上下文。

1、当遇到变量名和函数名相同的问题。

var a = 10;
function a(){console.log(1);
}
a(); //报错

  如果你觉得函数a会覆盖变量a那你肯定是js的新朋友,为什么这里会报错呢?我记得我在基础的执行上下文文章中说过变量声明提前的概念,对这里就是因为这个原因,但是在上面一篇文章中还有一个问题我没有去讲。

  那就是函数的声明比变量的声明顺序更早,上面那段代码相当于下面这段代码:

function a(){console.log(1);
}
var a = undefined;
a = 10;
a();

函数a被变量a覆盖了。

  2.当函数在另外一个函数中调用的时候

var a = 1;
function fn1(){console.log(a);
}
function fn2(){fn1();
}
a = 2;
fn2(); //2

  这里没有输出1是因为fn1嵌套在fn2中,所以函数fn2没有执行的话,fn1自然也没有被执行,又因为fn2是在a赋值为2以后才执行的所以fn1打印的就是2,此时a的值就是2。

到这里,关于js的执行上下文就可以告一段落了,当然如果后期遇到其他的问题,会继续更新到这一文章中,之所以这一章讲解的比较简单是因为有上面一节的基础。

转载于:https://www.cnblogs.com/pssp/p/5218716.html

进阶学习js中的执行上下文相关推荐

  1. js原理之执行上下文

    个人笔记 不足请指正. js在执行时 语法分析 在执行之前会通篇扫描 有没有语法错误 1.imply global 暗示全局变量,即任何变量,如果变量未经声明就复制,此变量就为全局所有. 2.一切声明 ...

  2. JS中自动执行函数小结

    JS中自动执行函数小结 请看以下两个函数: 1.function a(){ 2.    alert("a") 3.} 1.var b= function(){ 2.    aler ...

  3. 前端基础进阶(二):执行上下文详细图解

    我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; 暂时先不管这个例子,我们先引 ...

  4. js中立即执行函数会预编译吗_面试官:聊聊对Vue.js框架的理解

    作者:yacan8 https://github.com/yacan8/blog/issues/26 本文为一次前端技术分享的演讲稿,所以尽力不贴 Vue.js 的源码,因为贴代码在实际分享中,比较枯 ...

  5. js中立即执行函数会预编译吗_作为前端你了解JavaScript运行机制吗?

    作为前端工程师,大家都知道js是前端一开始就要学会的知识点,js的代码你会写了,那js的运行机制你了解吗?只有了解了js的运行机制,才能在工作中如鱼得水,今天就跟随珠峰的老师一起来了解下js的运行机制 ...

  6. js中立即执行函数会预编译吗_js变量提升和函数提升

    把变量提升函数提升拿出来讲,一看就知道是老前端搬砖工了,其实这些js的基础本质的东西,很有必要去了解,可以活跃思维,而且可以在研究这个的过程中,找到当初设计这门语言的人的想法,然后让自己不仅仅是对这个 ...

  7. 「前端进阶」JS中的内存管理

    前言: 像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()用于分配内存和释放内存. 而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在 ...

  8. 初步学习JS中的闭包

    JS高级程序设计(3rd)中对闭包的定义就是一句话,首先闭包是一个函数,怎样的函数呢?有权访问另一个函数作用域中的变量 的函数.而创建闭包的常见方式就是在一个函数的内部创建另一个函数,就是嵌套函数. ...

  9. js中立即执行函数会预编译吗_JavaScript预编译过程

    什么是预编译? 当js代码执行时有三个步骤: 1.语法分析,这个过程检查出基本的语法错误. 2,预编译,为对象分配空间. 3,解释执行,解释一行执行一行,一旦出错立即停止执行. 预编译发生在代码执行的 ...

最新文章

  1. mysql key value 排序_MySQL利用索引优化ORDER BY排序语句的方法
  2. 使用ps命令输出进程列表--用Enki学Linux系列(17)
  3. JavaScript open() 函数
  4. FPGA实验四——时间基准电路和带使能的多周期计数器
  5. JAVA _构造函数
  6. 《JAVA与模式》之建造模式
  7. go语言io reader_【已解决】go语言中如何使用io的MultiWriter
  8. java 摸拟qq消息提示_java 仿qq消息提示框
  9. python pillow环境_解决Python图片处理模块pillow使用中出现的问题
  10. createwindow 和 dialogbox的区别
  11. Codeforces Round #493 (Div. 2):C. Convert to Ones
  12. 关于深度探索C++对象模型笔记
  13. 指针错位导致对FSD误判
  14. C语言的标准内存分配函数
  15. 从零开始的腾讯电脑管家下载安装配置教程
  16. HoRNet SongKey MKIII Mac - 实时调性和弦检测
  17. 网站域名有哪些不同的种类?
  18. 4年级计算机 设计贺卡教案,第三课制作节日贺卡 教学设计
  19. coffeescript_在客户端上使用CoffeeScript
  20. 余压监控系统在某高层住宅的应用方案

热门文章

  1. java rgb转yuv_【转】总结各种RGB转YUV的转换公式
  2. cve20190708补丁的kb名称_微软KB4495667补丁(CVE 2019-0708补丁)V1.1 官方版
  3. Maven parent.relativePath
  4. django之快速分页
  5. 第一次冲刺阶段(三)
  6. 总结css中单位px和em,rem的区别
  7. 公众号出现该公众号提供的服务出现故障分析
  8. git 回滚 add 操作_炫技!git 优雅回滚一次错误的合并操作!
  9. java反射 pdf_java反射学习笔记整理.pdf
  10. vue路由传参的三种基本方式