zoukankan      html  css  js  c++  java
  • 0140 JavaScript作用域:概述、全局作用域、函数作用域、块级作用域

    1.1 作用域概述

    通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
    

    JavaScript(es6前)中的作用域有两种:

    • 全局作用域
    • 局部作用域(函数作用域)

    1.2 全局作用域

    作用于所有代码执行的环境(整个 script 标签内部),或者一个独立的 js 文件。
    

    1.3 局部作用域

    作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。
    
            var num = 10;
            var num = 30;
            console.log(num);
       
            function fn() {
                // 局部作用域
                var num = 20;
                console.log(num);
            }
            fn();
    

    1.4 JS没有块级作用域

    • 块作用域由 { } 包括

    • 在其他编程语言中(如 java、c#等),在 if 语句、循环语句中创建的变量,仅仅只能在本 if 语句、本循环语句中使用,如下面的Java代码:

      java有块级作用域:

      if(true){
        int num = 123;
        system.out.print(num);  // 123
      }
      system.out.print(num);    // 报错
      

      以上java代码会报错,是因为代码中 { } 即一块作用域,其中声明的变量 num,在 “{ }” 之外不能使用;

      而与之类似的JavaScript代码,则不会报错:


    Js中没有块级作用域(在ES6之前)

    if(true){
      var num = 123;
      console.log(123); //123
    }
    console.log(123);   //123
    
  • 相关阅读:
    k近邻 KNN
    聚类之k-means
    支持向量机SVM、优化问题、核函数
    [THUSC 2016] 补退选 (Trie树)
    [CQOI2016] 手机号码 (数位dp)
    [CQOI2012] 交换棋子 (费用流)
    [SCOI2016] 背单词 (Trie树)
    [JSOI2009] 球队收益 (费用流)
    [BZOJ1878][SDOI2009] HH的项链 (树状数组)
    [BZOJ2151]种树
  • 原文地址:https://www.cnblogs.com/jianjie/p/12151703.html
Copyright © 2011-2022 走看看