• js:语言精髓笔记6----作用域


    js基础语法:由语句、表达式和变量构成;   语句是主要表达方式:单语句->复合语句(代码块)->程序片段(函数);js中没有单元和程序的概念;

    作用域:

    语法作用域与变量作用域的区别:前者是语法分析阶段对代码块组织结构的理解;后者是代码执行阶段对变量存储的理解;

    (有些地方也成为静态作用域和动态作用域)

    1.语法作用域

    • 语法作用域的级别:
      • 表达式:
      • 语句:
        • var ....... ;           //语法关键字表示特定行为,省略部分为目标,不能是符合语句;
        • if()..else..;   for()....;  do..while();  while()....;  with().....;     //省略部分可以是单行语句或符合语句;
      • 批语句:
        • switch(){} ;  try{} catch(){} finally{};                    //用{}来限制一段代码块作为它的语法作用域;
      • 函数:
        • function(){};                     //以函数所声明的代码块为作用域;这里可以理解为什么函数声明形式解析后会全部提前,而函数表达式则只是变量名提前的不同;
      • 全局:
    • 语法作用域之间的关系:
      • 平行:
      • 嵌套:
        • 相同级别可以互相嵌套;
        • 高级别可以包含低级,反之不能;
    • 执行流程:
      • 基本流程:顺序执行;
      • 变更:      //break [label]不能跨越函数的语法作用域;
        • 语句:
          • continue/break/continue [label]                  //仅对循环语句构成影响;
          • break [label]                                            //对标签化语句构成影响;
        • 批语句:
          • break                                                    //对多重分支构成影响;
        • 函数:
          • return []                                               //对函数构成影响;
        • 全局:
          • throw.....                                              //对全局代码构成影响;即代码在全局在停止;

     2.变量作用域

    • 变量作用域的级别:
      • 表达式:(直接量)
        • 常量:
        • 变量:js中表达式级别的变量都是匿名的,如匿名函数,对象直接量等;
      • 语句:js并没有语句基本的变量作用域;
      • 函数:常见的局部变量;
      • 全局:常见的全局变量;  //是否使用var对其处理规则是有影响的;
    • 变量生存周期:
      • 创建:
        • 引擎做语法分析,发现显示声明时;
        • 引擎做代码执行,发现试图写(如赋值)一个未被创建的变量时;
      • 释放:
        • 引擎执行到函数结束/退出操作时,将清楚函数内的未被引用的变量;
        • 引擎执行到全局的代码块终结或引擎预载和重新载入时,将清除全局的变量和数据的引用;
  • 相关阅读:
    【树状数组套权值线段树】bzoj1901 Zju2112 Dynamic Rankings
    【权值线段树】bzoj3224 Tyvj 1728 普通平衡树
    【转载】【树形DP】【数学期望】Codeforces Round #362 (Div. 2) D.Puzzles
    ReStart
    Good-Bye
    【分块打表】bzoj1662 [Usaco2006 Nov]Round Numbers 圆环数
    【分块打表】bzoj1026 [SCOI2009]windy数
    【分块打表】bzoj3798 特殊的质数
    【分块打表】bzoj3758 数数
    【线段树】bzoj3995 [SDOI2015]道路修建
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4078562.html
Copyright © 2020-2023  润新知