摘要:静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域变量。
静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域(变量)。
动态作用域–函数的作用域是在函数调用的时候才决定的
JavaScript采用的是词法作用域即静态作用域;
// 静态作用域: var a = 10; function fn() { var b = 1; console.log(a + b); } fn(); // 11
在创建fn函数时的时候就已经确定了它可以作用哪些变量,如果函数fn里面有变量a就直接操作变量a,
如果没有就往上一级查找,这就是静态作用域
// 动态作用域: function foo() { console.log(a); } function bar() { var a = 3; foo(); } var a = 2; bar(); // 2;
bar 调用,bar里面foo被调用,foo函数需要查找变量a,由于JavaScript是词法作用域(即静态作用域),foo被解析时在全局作用域.
所以只能在全局作用域中找a,输出结果为2,而非bar作用域中的a。如果js采用的时动态作用域,那么foo在bar中调用,就会先在bar中查询a,输出为3。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104762.html
摘要:在中的应用采用词法作用域,也就是静态作用域。那什么又是词法作用域或者静态作用域呢请继续往下看静态作用域与动态作用域因为采用的是词法作用域函数的作用域在函数定义的时候就决定了。 开篇 当我们在开始学习任何一门语言的时候,都会接触到变量的概念,变量的出现其实是为了解决一个问题,为的是存储某些值,进而,存储某些值的目的是为了在之后对这个值进行访问或者修改,正是这种存储和访问变量的能力将状态给...
摘要:作用域作用域是指程序源代码中定义变量的区域。采用词法作用域,也就是静态作用域。而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。前面我们已经说了,采用的是静态作用域,所以这个例子的结果是。 JavaScript深入系列的第二篇,JavaScript采用词法作用域,什么语言采用了动态作用域?两者的区别又是什么?还有一个略难的思考题,快来看看吧。 作用域 作用域是指...
摘要:总结总而言之,作用域在语法分析时就已经处理完啦,的作用域是静态作用域,在运行时只是上下文对象在一直发生变化。 JavaScript 的作用域和上下文对象this 从几个有意思的js问题开始 为什么输出的不是f2? `var scope = top; var f1 = function() { console.log(scope); }; f1(); //...
摘要:在代码执行时,对应的作用域链常常是保持静态的。当语句执行完毕后,会把作用域链恢复到原始状态。在全局作用域中创建的函数,其作用域链会自动成为全局作用域中的一员。 列表项目 前言 学习了javascript已经很久了,关于这个语言中的这两个特性也是早已耳熟能详,但是在实际的使用的过程中或者是遇到相关的问题的时候,还是不能很好的解决。因此我觉得很有必要深入的学习并且记录这个问题,以便在今后的...
摘要:作用域的类别可以影响到变量的取值,分为词法作用域静态作用域和动态作用域。而,采用的就是词法作用域,或者叫静态作用域。 关于javascript中的作用域和作用域链 我GitHub上的菜鸟仓库地址: 点击跳转查看其他相关文章 文章在我的博客上的地址: 点击跳转 前面的文章说到, 执行上下文的创建阶段,主要有三个内容: 1、创建变量对象;2、初始化作用域...
阅读 671·2023-04-25 19:53
阅读 4207·2021-09-22 15:13
阅读 2542·2019-08-30 10:56
阅读 1300·2019-08-29 16:27
阅读 2916·2019-08-29 14:00
阅读 2373·2019-08-26 13:56
阅读 397·2019-08-26 13:29
阅读 1594·2019-08-26 11:31