JavaScript grammar

Posted by WunWun on February 10, 2017

空白

JavaScript中有两种注释,一种是 /* */ 包围的块注释,另一种是 // 开头的行注释。

因为块注释的字符可能是JavaScript中正则表达式字面量,因此不是很安全,如:

/*
    var rm_a = /a*/.match(s)
*/

标识符

标识符由一个字母开头,后面可选择性的加上一个或多个字母、数字或下划线。要避免保留字。

标识符被用于语句、变量、参数、属性名、运算符和标记。

数字

JavaScript只有一个数字类型。它在内部被表示为64位的浮点数。与其他大多数编程语言不同的是,它没有分离出整数类型,所以1和1.0的值相同。

如果一个数字字面量有指数部分,那么这个字面量的值等于e之前的数字与10的e之后数字的次方相乘。

NaN是一个数值,它表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它自己。可以用函数isNaN(number)检测NaN.

Infinity表示所有大于1.79769313486231570e+308的值。

JavaScript有一个对象Math,它包含一套作用于数字的方法。

字符串

字符串字面量可以被包在一对单引号或双引号中,它可能包含0个或多个字符。\(反斜杠)是转义字符。JavaScript中的所有字符都是16位的。

JavaScript没有字符类型。要表示一个字符,只需创建仅包含一个字符的字符串即可。

字符串是不可变的。一旦字符串被创建,就永远无法改变它。但可以通过+运算符连接其他字符串来创建一个新字符串。两个包含着完全相同的字符且字符顺序也相同的字符串被认为是相同(===)的字符串。

语句

一个编译单元包含一组可执行的语句。在Web浏览器中,每个<script>标签提供一个被编译且立即执行的编译单元。因为缺少链接器,JavaScript把它们一起抛到一个公共的全局名字空间中。

当var语句被用在函数内部时,它定义的是这个函数的私有变量。

代码块是包在一对花括号中的一组语句。JavaScript中的代码块不会创建新的作用域。

下面列出的值被当做假(falsy),除此之外,其他所有的值被当做真。

  • false
  • null
  • undefined
  • 空字符串‘’
  • 数字0
  • 数字NaN

for in语句会枚举一个对象的所有属性名(键名)。通常需要检测object.hasOwnProperty(variable)来确定这个属性名是该对象的成员,还是来自于原型链。

for (myvar in obj) {
    if (obj.hasOwnProperty(myvar)) {

    }
}

break语句会使程序退出一个循环语句switch语句

表达式

函数调用引发函数的执行。函数调用运算符是跟随在函数名后面的一对圆括号。括号中可能包含传递给这个函数的参数。

字面量

对象字面量是一种可以方便地按指定规格创建新对象的表示法。

数组字面量是一种可以方便地按指定规格创建新数组的表示法。

函数

函数字面量定义了函数值。它可以有一个可选的名字,用于递归地调用自己。

著作权声明

作者 陈兴旺,首次发布于 WunWun Blog,转载请保留以上链接