**3.1.4 严格模式
ECMAScript 5 引入了严格模式(strict mode)的概念。严格模式是为 JavaScript 定义了一种不同的
解析与执行模型。在严格模式下, ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全
的操作也会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:
"use strict";
这行代码看起来像是字符串,而且也没有赋值给任何变量,但其实它是一个编译指示(pragma),
用于告诉支持的 JavaScript 引擎切换到严格模式。这是为不破坏 ECMAScript 3 语法而特意选定的语法。
在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:
function doSomething(){ "use strict"; //函数体 }
3.2关键字
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger* function this with
default if throw
delete in try
3.3变量
function test(){ var message = "hi"; // 局部变量 } test(); alert(message); // 错误!
function test(){ message = "hi"; // 全局变量 } test(); alert(message); // "hi"
省略var,message会升级为全局变量.
不推荐,给未经声明的变量赋值在严格模式下会导致抛出 ReferenceError 错误。
3.4数据类型
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number
和 String。还有 1 种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
数据类型 转换为true的值 转换为false的值
Number 任何非零数字值(包括无穷大) 0和NaN(参见本章后面有关NaN的内容)
Object 任何对象 null
Undefined n/a① undefined
3.46
1.与 PHP 中的双引号和单引号会影响对字符串的解释方式不同, ECMAScript 中的这两种语法形式没
有什么区别。
2.ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变
某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,
3.toString()可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格
式表示的字符串值。num.toString(2);
3.5
我们可以利用逻辑或的这一行为来避免为变量赋 null 或 undefined 值。例如:
var myObject = preferredObject || backupObject;
在这个例子中,变量 myObject 将被赋予等号后面两个值中的一个。变量 preferredObject 中包
含优先赋给变量 myObject 的值,变量 backupObject 负责在 preferredObject 中不包含有效值的
情况下提供后备值。如果 preferredObject 的值不是 null,那么它的值将被赋给 myObject;如果
是 null,则将 backupObject 的值赋给 myObject。ECMAScript 程序的赋值语句经常会使用这种模式,
本书也将采用这种模式。