七、JavaScript 的语法
- 多行注释 ,被/* */包裹的任意区域,它不能嵌套使用
function (a /* int */, b /* str */) {}
- 表达式 将会产生一个值,它可以写在任何需要值的地方。
- 语句 表示了一种行为,如循环和if语句,一个程序基本上就是语句的序列。
凡是在JavaScript期望语句的地方都可以写表达式,这样的语句叫做表达式语句。反之则不然:不能在需要表达式的地方使用语句。
- 有两种像语句的表达式类型,它们的语法类型是 二义 的。
- 对象字面量(表达式)看上去像块(语句):
{
foo: bar(3, 5)
}
- 具名函数表达式看上去像是函数声明(语句):
function foo() {}
为了避免二义性,在解析过程中,JavaScirpt不能使用对象字面和函数表达式作为语句,即表达式语句不能以 花括号 和 function关键字 内容开头。
- eval 在语句的上下文中解析它的参数。如果希望 eval 返回一个对象,需要用小括号将对象字面两括起来。
eval('{ x: 123 }')
// output: 123
eval('({ x: 123 })')
//output: { x: 123 }
- 在调用 数字变量 的方法时,区分是浮点数的小数点还是调用方法的点运算符是非常重要的。因此不可以写类似 1.toString() 这样的代码,必须使用以下一种方式:
1..toString()
1 .toString() // space before dot
(1).toString()
1.0.toString()
- 可以在 JavaScript 文件或者 <script> 标签的第一行加入以下代码来启用严格模式:
'use strict'
...
也可以为每个函数启用严格模式:
function foo() {
'use strict'
...
}
启用严格模式需要注意的问题:
- 启用严格模式可能会破坏 现有的 代码
- 变量必须被声明
- 函数必须在作用域的顶部声明
- arguments对象拥有更少的属性
- 无方法的函数中 this 的值为 undefined
- 设置或者删除不可改变的属性(对属性的非法操作)会抛出异常
- 严格模式中, eval 更加简洁
- with 语句不能再被调用
- 没有八进制数字
网友评论