美文网首页
JS中的词法作用域(静态作用域)和动态作用域

JS中的词法作用域(静态作用域)和动态作用域

作者: 有鱼是只猫 | 来源:发表于2020-02-10 18:14 被阅读0次

首先说明一下,JavaScript没有用动态作用域概念,但 this 机制却和动态作用域类似!

JavaScript是通过作用域链的方式进行变量查找的,而JS作用域链是词法作用域,也就做静态作用域!

词法作用域:在函数声明(定义)时确定的

动态作用域:在函数调用时确定的

var cat = '有鱼';

function person() {

console.log(cat); // 有鱼

}

function student() {

var cat = '年年';

person();

}

student();

代码分析:

①调用student函数,其内部又调用了person函数,因为JS使用的是词法作用域,即关心的是函数声明时的作用域,所以我们需要看查person定义里面的情况;

②person函数内部输出了cat,此时,找不到cat,按照作用域链特性向外层寻找,找到了cat为‘有鱼’;所以结果输出的是‘有鱼’;

③如果JS支持动态作用域,则需要看person()调用所在的作用域,即cat='年年';不过JS不支持动态作用域!

相关文章

  • 作用域

    静态作用域 (词法作用域) 和 动态作用域 下面的例子可以帮助理解 假设 JavaScript 采用 静态作用域,...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 词法作用域&动态作用域

    词法作用域(静态作用域) 词法作用域也叫静态作用域,jsvascript为词法作用域。词法作用域关心的是你的函数申...

  • 「JS」变量作用域

    作用域介绍静态作用域动态作用域 JavaScript 变量作用域词法环境组成创建结构关于词法环境的问题with 语...

  • 作用域和闭包

    1.理解词法作用域和动态作用域 作用域 静态作用域 作用域是指程序源码中定义变量的区域作用于规定如何查找变量,也就...

  • 执行上下文、作用域链、this、闭包

    javascript 执行的是词法作用域,即静态作用域。与之相对的是动态作用域。 静态作用域:函数的作用域在函数定...

  • 《JavaScript 语言精粹》笔记

    U1 精华 词法作用域 词法作用域/静态作用域:作用域在词法分析阶段就确定了,不会改变 动态作用域:运行时根据程序...

  • JavaScript作用域和变量提升

    一、JS的作用域 1.JS采用词法作用域 首先,我们得知道JavaScript采取的是词法作用域,而不是动态作用域...

  • js中的作用域

    作用域就是决定变量有效范围 作用域按决定的时期来区分可分为词法作用域和动态作用域词法作用域: 词法作用域就是作用域...

  • 详解javascript中的词法作用域

    所谓作用域,就是一个声明起作用的那一段的程序代码。而作用域又分为词法作用域(也叫静态作用域)和动态作用域。静态作用...

网友评论

      本文标题:JS中的词法作用域(静态作用域)和动态作用域

      本文链接:https://www.haomeiwen.com/subject/pvdaxhtx.html