基本概念
一、严格模式
ECMAScript 5引入了严格模式(strict mode)的概念。严格模式是为 JavaScript定义了一种不同的 解析与执行模型。在严格模式下,ECMAScript 3中的一些不确定的行为将得到处理,而且对某些不安全 的操作也会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:
"use strict";
ECMA-262第 5版对 eval 和 arguments 施加了限制。在严格模式下,这两个名字也不能作为标识符或属性名,否则会抛出错误。
二、变量
使用var定义变量,可以定义任何类型的值。如果未经赋值,会保存一个特殊的值--undefined。注意:虽然var可以定义任何类型的值,但是不推荐定义某种类型后又赋值为另一种类型。用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说, 如果在函数中使用 var 定义一个变量,那么这个变量在函数退出后就会被销毁。
三、数据类型
ECMAScript中有 5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number 和String。还有1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的
typeof操作符:用于检测变量的数据类型。
"undefined"——如果这个值未定义;
"boolean"——如果这个值是布尔值;
"string"——如果这个值是字符串;
"number"——如果这个值是数值;
"object"——如果这个值是对象或 null;
"function"——如果这个值是函数。
注:typeof根据每个变量的低三位机器码判断变量的数据类型
四、数值转换
Number()函数的转换规则如下。
如果是 Boolean 值,true 和 false 将分别被转换为 1和 0。
如果是数字值,只是简单的传入和返回。
如果是 null 值,返回 0。
如果是 undefined,返回 NaN。
如果是字符串,遵循下列规则:
如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"会变成1,"123"会变成 123,而"011"会变成11(注意:前导的零被忽略了);
如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽 略前导零);
如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
如果字符串是空的(不包含任何字符),则将其转换为 0;
如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。
如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符 串值。