进阶学习js中的执行上下文
在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中的执行上下文相关推荐
- js原理之执行上下文
个人笔记 不足请指正. js在执行时 语法分析 在执行之前会通篇扫描 有没有语法错误 1.imply global 暗示全局变量,即任何变量,如果变量未经声明就复制,此变量就为全局所有. 2.一切声明 ...
- JS中自动执行函数小结
JS中自动执行函数小结 请看以下两个函数: 1.function a(){ 2. alert("a") 3.} 1.var b= function(){ 2. aler ...
- 前端基础进阶(二):执行上下文详细图解
我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; 暂时先不管这个例子,我们先引 ...
- js中立即执行函数会预编译吗_面试官:聊聊对Vue.js框架的理解
作者:yacan8 https://github.com/yacan8/blog/issues/26 本文为一次前端技术分享的演讲稿,所以尽力不贴 Vue.js 的源码,因为贴代码在实际分享中,比较枯 ...
- js中立即执行函数会预编译吗_作为前端你了解JavaScript运行机制吗?
作为前端工程师,大家都知道js是前端一开始就要学会的知识点,js的代码你会写了,那js的运行机制你了解吗?只有了解了js的运行机制,才能在工作中如鱼得水,今天就跟随珠峰的老师一起来了解下js的运行机制 ...
- js中立即执行函数会预编译吗_js变量提升和函数提升
把变量提升函数提升拿出来讲,一看就知道是老前端搬砖工了,其实这些js的基础本质的东西,很有必要去了解,可以活跃思维,而且可以在研究这个的过程中,找到当初设计这门语言的人的想法,然后让自己不仅仅是对这个 ...
- 「前端进阶」JS中的内存管理
前言: 像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()用于分配内存和释放内存. 而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在 ...
- 初步学习JS中的闭包
JS高级程序设计(3rd)中对闭包的定义就是一句话,首先闭包是一个函数,怎样的函数呢?有权访问另一个函数作用域中的变量 的函数.而创建闭包的常见方式就是在一个函数的内部创建另一个函数,就是嵌套函数. ...
- js中立即执行函数会预编译吗_JavaScript预编译过程
什么是预编译? 当js代码执行时有三个步骤: 1.语法分析,这个过程检查出基本的语法错误. 2,预编译,为对象分配空间. 3,解释执行,解释一行执行一行,一旦出错立即停止执行. 预编译发生在代码执行的 ...
最新文章
- mysql key value 排序_MySQL利用索引优化ORDER BY排序语句的方法
- 使用ps命令输出进程列表--用Enki学Linux系列(17)
- JavaScript open() 函数
- FPGA实验四——时间基准电路和带使能的多周期计数器
- JAVA _构造函数
- 《JAVA与模式》之建造模式
- go语言io reader_【已解决】go语言中如何使用io的MultiWriter
- java 摸拟qq消息提示_java 仿qq消息提示框
- python pillow环境_解决Python图片处理模块pillow使用中出现的问题
- createwindow 和 dialogbox的区别
- Codeforces Round #493 (Div. 2):C. Convert to Ones
- 关于深度探索C++对象模型笔记
- 指针错位导致对FSD误判
- C语言的标准内存分配函数
- 从零开始的腾讯电脑管家下载安装配置教程
- HoRNet SongKey MKIII Mac - 实时调性和弦检测
- 网站域名有哪些不同的种类?
- 4年级计算机 设计贺卡教案,第三课制作节日贺卡 教学设计
- coffeescript_在客户端上使用CoffeeScript
- 余压监控系统在某高层住宅的应用方案
热门文章
- java rgb转yuv_【转】总结各种RGB转YUV的转换公式
- cve20190708补丁的kb名称_微软KB4495667补丁(CVE 2019-0708补丁)V1.1 官方版
- Maven parent.relativePath
- django之快速分页
- 第一次冲刺阶段(三)
- 总结css中单位px和em,rem的区别
- 公众号出现该公众号提供的服务出现故障分析
- git 回滚 add 操作_炫技!git 优雅回滚一次错误的合并操作!
- java反射 pdf_java反射学习笔记整理.pdf
- vue路由传参的三种基本方式