资讯专栏INFORMATION COLUMN

JS变量作用域

bang590 / 2967人阅读

摘要:如果内部函数定义了与外部函数重名的变量,则内部函数的变量将屏蔽外部函数的变量。局部作用域在任何块级即内语句中定义变量或常量具有全局作用域。

1. 全局作用域

&& var:不在任何函数体内定义的var变量具有全局作用域(不同函数内部的同名变量互相独立,互不影响:)
&& let和const: 不在任何块级(即{}内)语句中定义的let变量或const常量具有全局作用域(不同块级(即{}内)语句内部的同名变量互相独立,互不影响:)
// 1.如果一个var变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量:
function garden() {
    var x = 1;
    x = x + 1;
}
x = x + 2; // ReferenceError! 无法在函数体外引用变量x

// 2.如果一个let变量或const常量在块级(即{}内)语句内部申明,则该变量的作用域为整个块级(即{}内)语句,
//   在块级(即{}内)语句外不可引用该变量:
if (true) {
    var upperA = "LetterA";
}
upperA + "B"; // ReferenceError: upperA is not defined

// 3.由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行:
function garden() {
    let x = 1;
    function showtime() {
        let y = x + 1; // showtime可以访问garden的变量x!
    }
    let z = y + 1;     // ReferenceError! garden不可以访问showtime的变量y!
}

提醒:JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。

2. 局部作用域

在任何块级(即{}内)语句中定义变量或常量具有全局作用域。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100450.html

相关文章

  • JavaScript之变量作用

    摘要:所以的作用域是静态作用域,也叫词法作用域。总结是一门基于词法作用域静态作用域的语言,会沿着作用域链像气泡一样向外部寻找变量声明。又是函数作用域的语言,在中,使用和关键字后,能让变量处于块作用域中,而且不存在声明提升。 本文共 1700 字,读完只需 7 分钟 概述 变量,编程语言中我们用来模拟现实概念的工具,比方说,变量可以表示对象,数组,数字,字符。既然是工具,那么就用工具的适用范围...

    Faremax 评论0 收藏0
  • 形象化模拟作用链,深入理解js作用、闭包

    摘要:至此作用域链创建完毕。好了,通过深入理解作用域链,我们能跟好的理解的运行机制和闭包的原理。 前言 理解javascript中的作用域和作用域链对我们理解js这们语言。这次想深入的聊下关于js执行的内部机制,主要讨论下,作用域,作用域链,闭包的概念。为了更好的理解这些东西,我模拟了当一个函数执行时,js引擎做了哪些事情--那些我们看不见的动作。 关键词: 执行环境 作用域 作用域链 变...

    txgcwm 评论0 收藏0
  • JS核心知识点梳理——上下文、作用、闭包、this(上)

    摘要:引言满满的干货,面试必系列,参考大量资料,并集合自己的理解以及相关的面试题,对核心知识点中的作用域闭包上下文进行了梳理。如果在小区这个作用域找到了张老师,我就会在张老师的辅导下学钢琴我张老师房间钢琴构成了学琴的上下文环境。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 满满的干货,面试必bei系列,参考大...

    Andrman 评论0 收藏0
  • Js基础知识(三) - 作用与闭包

    摘要:是词法作用域工作模式。使用可以将变量绑定在所在的任意作用域中通常是内部,也就是说为其声明的变量隐式的劫持了所在的块级作用域。 作用域与闭包 如何用js创建10个button标签,点击每个按钮时打印按钮对应的序号? 看到上述问题,如果你能看出来这个问题实质上是考对作用域的理解,那么恭喜你,这篇文章你可以不用看了,说明你对作用域已经理解的很透彻了,但是如果你看不出来这是一道考作用域的题目,...

    lemanli 评论0 收藏0
  • Js基础知识(三) - 作用与闭包

    摘要:是词法作用域工作模式。使用可以将变量绑定在所在的任意作用域中通常是内部,也就是说为其声明的变量隐式的劫持了所在的块级作用域。 作用域与闭包 如何用js创建10个button标签,点击每个按钮时打印按钮对应的序号? 看到上述问题,如果你能看出来这个问题实质上是考对作用域的理解,那么恭喜你,这篇文章你可以不用看了,说明你对作用域已经理解的很透彻了,但是如果你看不出来这是一道考作用域的题目,...

    XFLY 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<