摘要:结果结果函数定义式函数表达式结果预编译是以段为处理单元结果作用域链代码优化在标识符解析的时候,查找全局变量是最慢的,所以尽量使用局部变量。全局变量的被调用两次,查找该变量必须遍历整个作用域链,耗费时间可以把它存储到局部变量里再使用。
作用域属性是在定义函数的时候决定的,不是在调用函数的时候决定。
JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里。
eg.
var name = "lw"; function alert_1 () { alert(name); } function alert_2 () { var name = "zgm"; alert_1(); } alert_2();// 结果:lwjs的预编译:
在一段js代码执行之前,会预先处理var关键字和function定义式(函数表达式和函数定义式),对于局部变量,变量的值会在真正执行的时候计算。
函数定义注意:函数定义式和函数表达式的不同, 对于函数定义式, 会将函数定义提前.而函数表达式, 会在执行过程中才计算。
eg.
alert(typeof hello);//结果:function alert(typeof world);//结果:undefined function hello(){ //函数定义式 alert("hello"); } var world=function(){ //函数表达式 alert("world"); } alert(typeof world);//结果:function
js预编译是以段为处理单元
作用域链代码优化在标识符解析的时候,查找全局变量是最慢的,所以尽量使用局部变量。
function changeColor(){ var doc=document; doc.getElementById("NM").onclick=function(){ doc.getElementById("AL").style.backgroundColor="red"; }; }
全局变量document的被调用两次,查找该变量必须遍历整个作用域链,耗费时间,可以把它存储到局部变量里再使用。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81581.html
摘要:下面,让我们以一个函数的创建和激活两个时期来讲解作用域链是如何创建和变化的。这时候执行上下文的作用域链,我们命名为至此,作用域链创建完毕。 JavaScript深入系列第五篇,讲述作用链的创建过程,最后结合着变量对象,执行上下文栈,让我们一起捋一捋函数创建和执行的过程中到底发生了什么? 前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代...
摘要:作用域作用域是指程序源代码中定义变量的区域。采用词法作用域,也就是静态作用域。而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。前面我们已经说了,采用的是静态作用域,所以这个例子的结果是。 JavaScript深入系列的第二篇,JavaScript采用词法作用域,什么语言采用了动态作用域?两者的区别又是什么?还有一个略难的思考题,快来看看吧。 作用域 作用域是指...
摘要:深入系列第七篇,结合之前所讲的四篇文章,以权威指南的为例,具体讲解当函数执行的时候,执行上下文栈变量对象作用域链是如何变化的。前言在深入之执行上下文栈中讲到,当代码执行一段可执行代码时,会创建对应的执行上下文。 JavaScript深入系列第七篇,结合之前所讲的四篇文章,以权威指南的demo为例,具体讲解当函数执行的时候,执行上下文栈、变量对象、作用域链是如何变化的。 前言 在《Jav...
摘要:闭包面试题解由于作用域链机制的影响,闭包只能取得内部函数的最后一个值,这引起的一个副作用就是如果内部函数在一个循环中,那么变量的值始终为最后一个值。 (关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue、React、Node源码和实战、面试指导) 本周正式开始前端进阶的第二期,本周的主题是作用域闭包,今天是第8天。 本计划一共28期,每期重点攻克一个面试重难点,如果你还不了...
摘要:一作用域域表示的就是范围,即作用域,就是一个名字在什么地方可以使用,什么时候不能使用。概括的说作用域就是一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量。 一、作用域 域表示的就是范围,即作用域,就是一个名字在什么地方可以使用,什么时候不能使用。想了解更多关于作用域的问题推荐阅读《你不知道的JavaScript上卷》第一章(或第一部分),从编译原理的角度说明什么是作用域。概...
摘要:作用域是门动态语言,跟不一样,可以随意定义全局变量和局部变量,变量会在该作用域下提升,而且没有块级作用域。一预处理作用域解析的作用域只用两种,一个是全局的,一个是函数的,也称为全局作用域和局部作用域局部作用域可以访问全局作用域。 作用域 JavaScript是门动态语言,跟Java不一样,JavaScript可以随意定义全局变量和局部变量,变量会在该作用域下提升,而且JavaScrip...
阅读 3499·2023-04-25 16:35
阅读 657·2021-10-11 11:09
阅读 5993·2021-09-22 15:11
阅读 3320·2019-08-30 14:03
阅读 2560·2019-08-29 16:54
阅读 3307·2019-08-29 16:34
阅读 2981·2019-08-29 12:18
阅读 2055·2019-08-28 18:31