1.标识符:
所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。第一个字符必须是一个字母、下划线(_)或一个美元符号($);其他字符可以是字母、下划线、美元符号或数字。习惯采用驼峰大小写格式。
2.数据类型:
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的
3.变量:
ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。
4.严格模式:
在顶部添加"use strict"
来启用严格模式。
5.typeof操作符:
返回以下值:
- "undefined"——如果这个值未定义;
- "boolean"——如果这个值是布尔值;
- "string"——如果这个值是字符串;
- "number"——如果这个值是数值;
- "object"——如果这个值是对象或 null;
- "function"——如果这个值是函数。
6.关于Undefined:
var message;
alert(message); // 返回undefined
alert(age); // 产生错误
typeof(message); // 返回undefined
typeof(age); // 返回undefined
7.关于Null:
var message = null;
typeof(message); // 返回object
从逻辑上看,null 值表示一个空对象指针,因此返回object。
实际上,undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true:alert(null == undefined); //true
8.关于Boolean:
数据类型 | 转换为true的值 | 转换为false的值
–––– | –––– | ––––
Boolean | true | false
String | 任何非空字符串 | ""(空字符串)
Number | 任何非零数字值(包括无穷大) | 0和NaN
Object | 任何对象 | null
Undefined | n/a | undefined
n/a(或 N/A),是 not applicable 的缩写,意思是“不适用”。
9.Number类型:
八进制字面量在严格模式下是无效的,会导致支持的 JavaScript 引擎抛出错误。
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数。例如,0.1 加 0.2的结果不是 0.3,而是 0.30000000000000004。
例如:
if (a + b == 0.3) {
alert("You got 0.3.");
}
在这个例子中,我们测试的是两个数的和是不是等于 0.3。如果这两个数是 0.05 和 0.25,或者是 0.15和 0.15 都不会有问题。而如前所述,如果这两个数是 0.1 和 0.2,那么测试将无法通过。因此,永远不要测试某个特定的浮点数值。
由于内存的限制,ECMAScript 并不能保存世界上所有的数值。ECMAScript 能够表示的最小数值保存在 Number.MIN_VALUE 中——在大多数浏览器中,这个值是 5e-324;能够表示的最大数值保存在Number.MAX_VALUE 中——在大多数浏览器中,这个值是 1.7976931348623157e+308。如果某次计算的结果得到了一个超出 JavaScript 数值范围的值,那么这个数值将被自动转换成特殊的 Infinity 值。具体来说,如果这个数值是负数,则会被转换成-Infinity(负无穷),如果这个数值是正数,则会被转换成 Infinity(正无穷)。
var num = Number.Max_VALUE;
isFinite(num); // true
isFinite(num + 1); // false
10.NaN:
NaN 本身有两个非同寻常的特点。首先,任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN,这个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括 NaN 本身。例如,下面的代码会返回 false:
alert(NaN == NaN); //false
isNaN()函数,不是数值或者不能转化为数值则返回true,是数值或者能被转化为数值则返回false。例如:isNaN(true);
返回false。
只有 0 除以 0 才会返回 NaN,正数除以 0 返回 Infinity,负数除以 0 返回-Infinity。
11.String类型:
字符字面量整体被当作一个字符解析。
ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
将一个值转化为字符串有两种方式:1.利用toString()方法。 2.将其用+号与一个空字符""链接起来。
toString():
数字、布尔值、对象、字符串值都有toString()这个方法,但是null与undefined没有(会报错)。
在不知道要转换的值是不是 null 或 undefined 的情况下,还可以使用转型函数 String(),这个函数能够将任何类型的值转换为字符串。
例如:
12.Object类型
对象可以通过new操作符创建,如:var a = new Object();
Object 的每个实例都具有下列属性和方法。
- constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()。
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))。
- isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString():返回对象的字符串表示。
- valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值相同。