• 技术文章 >web前端 >前端问答

    javascript有没有块级作用域

    长期闲置长期闲置2022-03-10 11:41:49原创182

    在JavaScript中,没有块级作用域的概念。在块级语句中定义的变量,实际上是在包含函数中创建的,而非在语句中创建的,可以将变量声明放在函数体顶部,而不是将声明靠近放在使用变量之处。

    本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

    javascript有没有块级作用域

    Javascript没有块级作用域的概念。这意味着在块级语句中定义的变量,实际上是在包含函数中而非语句中创建的。

    代码段1:

    var scope="global";  
    function f(){   
        console.log(scope);  
        var  scope="local"  
        console.log(scope);  
    }  
    f();

      会输出什么?

      答案:undefined local

      代码段2:

    var scope="global";  
    function f(){  
        var scope;  
        console.log(scope);  
        scope="local"  
        console.log(scope);  
    }  
    f();

      又会输出什么?

      答案:undefined local

      代码段3:

    var scope="global";  
    function f(){  
        console.log(scope);  
    }  
    f();

      又会输出什么?

      答案:global

      通过以上三个例子,下面解释“JavaScript没有块级作用域,有函数作用域”这句话。

      在JavaScript中,由于函数作用域的特性,代码段1和代码段2是等价的,局部变量在整个函数体是中是有定义的,

    也就是说,代码段1在函数体内的局部变量scope覆盖了同名全局变量,并且只有在程序执行到var 语句的时候,局部变量scope才会被真正的

    赋值。因此,上述过程等价于:将函数内的变量声明“提前”至函数体顶部,同时变量初始化留在原来的位置:也就是代码段2。

      在具有块级作用域的编程语言中,在狭小的作用域里让变量声明和使用变量的代码尽可能靠近彼此,通常来讲,这是一个非常不错的编程

    习惯。由于JavaScript没有块级作用域,因此,一些程序员特意将变量声明放在函数体顶部,而不是将声明靠近放在使用变量之处。这种做法

    使得他们的源代码非常清晰地放映了知识的变量作用域。

    相关推荐:javascript学习教程

    以上就是javascript有没有块级作用域的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:javascript
    上一篇:javascript与DOM有什么区别 下一篇:jquery库类型分几种
    千万级数据并发解决方案

    相关文章推荐

    • JavaScript中#fff是什么颜色• javascript中数字占多少位bit• 详细介绍JavaScript怎么实现哈希表• 一起来聊聊JavaScript函数柯里化• 实例图文详解在JavaScript中实现队列
    1/1

    PHP中文网