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对其处理规则是有影响的;
  • 变量生存周期:
    • 创建:

      • 引擎做语法分析,发现显示声明时;
      • 引擎做代码执行,发现试图写(如赋值)一个未被创建的变量时;
    • 释放:
      • 引擎执行到函数结束/退出操作时,将清楚函数内的未被引用的变量;
      • 引擎执行到全局的代码块终结或引擎预载和重新载入时,将清除全局的变量和数据的引用;

js:语言精髓笔记6----作用域的更多相关文章

  1. js:语言精髓笔记11--动态语言特性(1)

    语言:程序最终被表达为数据(结构)和逻辑(算法),命令式和说明式/函数式语言分别从这两方面分类: 动态:在语言陈述时无法确定,必须在计算机执行时才能确定语言关系:JS是完全动态语言,导致其不确定性一般 ...

  2. js:语言精髓笔记8--对象系统

    封装: 一把对象系统,封装是由语法解析来实现的,即语法作用域:但js是动态语言,因此只能依赖变量作用域: js的变量作用域只有表达式,函数,全局三种:所以js只能实现public和private两种封 ...

  3. js:语言精髓笔记1--标识符与基本类型

    标识符: 命名: 语法以及类型----语法关键字                                           //逻辑 值(的存储位置)----变量和常量           ...

  4. js:语言精髓笔记12--动态语言特性(2)

    对于括号内: 通过赋值时发生的重写: (Object1 = function() {}).prototype.value = 100; var obj1 = new Object1; console. ...

  5. js:语言精髓笔记9--函数式语言特征

    形式化运算系统的研究: 图灵:提出图灵机形式系统,通过0,1运算系统来解决复杂问题: 冯诺依曼:提出了冯诺依曼体系:即通过修改内存反映运算结果: 阿隆左.丘奇:提出新的运算范型Lambda演算,计算机 ...

  6. js:语言精髓笔记7----原型继承

    面向对象有三个基本特性:封装,继承,多态:如果都满足的话称为面向对象语言:而部分满足则称为基于对象语言: 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器 ...

  7. js:语言精髓笔记5----语言分类

    计算模型:源于对计算过程的不同认识: 1.基于不同计算模型一般分为://教科书的一般分类 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 2.基于程序本质分类:  //编程的经典法则 ...

  8. js:语言精髓笔记10--闭包

    闭包:  //JS函数式风格中,在内部保存数据和对外无副作用这两个特性主要就是通过闭包实现的: 函数与闭包: 一个函数是一段静态代码,它是一个代码书写时已经编译期,静态概念:闭包是函数在代码运行过程中 ...

  9. js:语言精髓笔记3----语句

    JS语句分类:(注意语句都是有返回值的) 声明语句: 变量声明语句: 标签声明语句: 函数声明语句: 表达式语句:(表达式加分号) 变量赋值语句:具有声明一个变量的隐式效果: 函数调用语句; 属性赋值 ...

随机推荐

  1. 最近打算体验一下discuz,有不错的结构化数据插件

    提交sitemap是每位站长必做的事情,但是提交到哪里,能不能提交又是另外一回事.国内的话百度是大伙都会盯的蛋糕,BD站长工具也会去注册的,可有些账号sitemap模块一直不能用,或许是等级不够,就像 ...

  2. [Effective JavaScript 笔记] 第12条:理解变量声明提升

    js支持词法作用域,即除了极少的例外,对变量的引用会被绑定到声明变量最近的作用域中. js不支持块级作用域,即变量定义的作用域并不是离其最近的封闭语句或代码块,而是包含它们的函数. 不了解这个会产生一 ...

  3. mongo链接报错:couldn't connect to server 127.0.0.1:27017 (127.0.0.1)

    angela@angeladeMacBook-Air:/data/db$mongo MongoDB shell version: 2.6.1 connecting to: test 2014-06-0 ...

  4. ZeroMQ(java)中监控Socket

    基本上ZeroMQ(java)中基本的代码都算是过了一遍了吧,不过觉得它在日志这一块貌似基本没有做什么工作,也就是我们通过日志来知道ZeroMQ都发生了什么事情.. 而且由于ZeroMQ中将连接的建立 ...

  5. HTML快速入门2

    三.版面风格控制 1. 字体控制 A. 字体大小 用 <font Size=#> 和 </font> 表示,#为字号: 1 - 7 ,缺省为 3 ,可用 <basefon ...

  6. poj 1664

    http://poj.org/problem?id=1664 题目是中文的,一个递归的题目 把每一次的苹果分为两类 Ⅰ:所以盘子都放一个,然后其他的在随便放: Ⅱ:有一个盘子没有放苹果: 这样下去的话 ...

  7. Flash Player 19.0.0.124 Beta + IHTMLDocument3 IHTMLDocument2 ->get_innerHTML

    安装 Flash Player 19 之后 有 flash 动画的网页中 IHTMLDocument3 IHTMLDocument2 ->get_innerHTML 获取的 html 内容都是空 ...

  8. ffplay mini 媒体播放器

    下载 http://pan.baidu.com/s/1dDcp3lZ 一定要解压到 D:\ffplay\ 目录下 双击 OpenWith_FFPlay_mini.reg 注册ffplay 在视频文件名 ...

  9. Java for LeetCode 149 Max Points on a Line

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  10. project.json

    概述 项目相关配置,由原来的cocos2d.js中转移到project.json中,该文件需要与index.html同级,一般建议放在根目录下. 字段说明 debugMode 相当于原来的COCOS2 ...