JS语句分类:(注意语句都是有返回值的)

  • 声明语句:

    • 变量声明语句;
    • 标签声明语句;
    • 函数声明语句;
  • 表达式语句:(表达式加分号)
    • 变量赋值语句:具有声明一个变量的隐式效果;
    • 函数调用语句;
    • 属性赋值语句;
    • 方法调用语句;
  • 分支语句:
    • 条件分支语句;
    • 多重分支语句;
  • 循环语句:
    • for()
    • for...in
    • while
    • do..while
  • 控制结构:
    • 继续执行子句;
    • 中断执行子句;
    • 函数返回子句
    • 异常触发语句;
    • 异常捕获与处理;
  • 其他:
    • 空语句;
    • with语句;

声明语句与赋值语句:

  • 声明语句(显示声明)一定就有var,它是语法符号,不是运算符;
  • 当语句中既有声明(隐式或显示)又有赋值的时候,等号其实是语法分隔符而不是运算符,固不能用“+=”等 代替;
  • 当仅使用赋值语句(变量已经声明),此时等号是运算符,可以用其他运算符代替;

函数调用:

  • 具名函数直接调用: funtion foo(){}; foo();
  • 匿名函数通过引用调用: foo = function(){}; foo();
  • 没有引用的匿名函数调用:
    • (function(){}()):强制运算(最大的小括号)符使函数调用运算并执行
    • (function(){})():强制运算符运算“函数直接量声明”这个表达式,并返回引用,然后通过函数调用运算符操作引用;
    • void function(){}():void调用函数但忽略返回值;
  • 注意function(){}(),会被解析成两个语句,固无法执行;

流程控制:一般子句

  • 标签声明:标签可以与变量重名,因为它是另外一种独立的语法元素;
  • break子句:使用范围:标签化语句(后面必须跟label),循环,switch分支;
  • continue子句:仅对循环有意义;可以使用标签,但只能对单个循环语句有意义;因为continue不允许跳转到当前/外层的单个循环语句的起始之外。
  • return子句:不指定返回值的话返回undefined,注意和void的区别;

流程控制:异常

  • finally语句块总是在try/catch块退出之前被执行,即使有return或break;

js:语言精髓笔记3----语句的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 我所使用的一个通用的Makefile模板

    话不多说,请看: 我的项目有的目录结构有: dirls/ ├── include │   └── apue.h ├── lib │   ├── error.c │   ├── error.o │   ...

  2. mysql查询在一张表不在另外一张表的记录

    mysql查询在一张表不在另外一张表的记录   问题:    查询一个表(tb1)的字段记录不在另一个表(tb2)中      条件:tb1的字段key的值不在tbl2表中      -------- ...

  3. <转载>NPOI Excel 单元格背景颜色对照表

    我转载地址:http://www.holdcode.com/web/details/117 NPOI Excel 单元格颜色对照表,在引用了 NPOI.dll 后可通过 ICellStyle 接口的 ...

  4. [codeforces 293]A. Weird Game

    [codeforces 293]A. Weird Game 试题描述 Yaroslav, Andrey and Roman can play cubes for hours and hours. Bu ...

  5. VS2008+Qt+助手 智能提示不显示、Qt关键字不高亮的解决办法【已解决】

    笔者使用的开发环境是VS2008+Qt4.8.5+VAssistX,有时候会出现代码关键字不能高亮显示,并且助手的智能提示不显示.问题如下 解决的办法是在助手的选项中设置其搜索路径,助手的设置通过VS ...

  6. mysql中binary相加的问题

    我在mysql中有这样一段代码 SQL code   ? 1 2 3 4 5 6 7 8 declare @byte1 binary(1) declare @byte2 binary(1) decla ...

  7. cocos2dx混合模式应用———制作新手引导高亮区域

    先看下效果 制造这个椭圆高亮区域所使用原图是 附上代码 bool HelloWorld::init() { ////////////////////////////// // 1. super ini ...

  8. c++11之bind

    std::bind是个c++推出的新的特性,非常有用,让你写起来率试不爽. #include <iostream> using namespace std; #include <fu ...

  9. iOS NSOperation的使用

    先给出NSOpetation的官方指导https://developer.apple.com/library/ios/documentation/Cocoa/Reference/NSOperation ...

  10. Java for LeetCode 075 Sort Colors

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...