第三章:基本概念
ECMAScript中有5种简单数据类型(也称基本数据类型):Undefined\Null\Boolean\Number\String,还有一种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。
typeof是一个操作符而不是函数.
Undefined类型:此类型只有一个值,即undefined.在使用var声明变量但未对其初始化时,这个变量的值就是undefined.
var message;
var message2 = undefined;
alert(message); // ”undefined”
alert(message == undefined); // true
alert(typeof message); // ”undefined”
alert(message == undefined); // true
alert(age); // 产生错误
alert(typeof age); // ”undefined”
Null类型:此类型只有一个值,即null.表示一个空对象指针。
var car = null;
alert(typeof car); // ”object”
if(car != null){
//对car对象执行操作
}
undefined值是派生自null值的。
alert(null == undefined); //true
只要意在保存对象的变量还没有真正保存对象,就应该明确地让该对象保存null值。
Number类型:
八进制的第一位是0,十六进制的前两位是0x.
科学计数法:e
ECMAScript所能表示的最小和最大的值分别是:Number.MIN_VALUE与Number.MAX_VALUE,超出范围,会被成Infinity值(即Number.POSITIVE_INFINITY)或者-Infinity(即Number.NEGATIVE_INFINITY).
NaN(Not a Number)
1. 任何涉及到NaNde 操作都会返回NaN.
2. NaN与任何值都不相等,包括NaN本身。
alert( NaN == NaN ); // false
IsNaN()在接受到一个值之后,会尝试将这个值转换为数值。
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false
alert(isNaN(“10”)); //false
alert(isNaN(“blue”)); //true
alert(isNaN(true)); //false(可以被转换成1)
isNaN也适用于对象,会先调用对象的valueOf()方法,如果不能转换为数值,再基于返回值调用toString()方法。
数值转换:
可以将非数值转换成数值的函数:
1. Number() 用于任何数据类型,不解析八进制
var str ;
var str2 = null;
var str3 = “hello world”;
Number(str); //NaN
Number(str2); //0
Number(str3); //NaN
Number(“”); //0
Number(“000011”); //11
Number(true); //1
Number(“0xA”); //10
一元加操作符的操作与Number()相同。
2. parseInt() 用于字符串类型(忽略前面的空格),可解析八进制
parseInt(“ 1234blue”); // 1234
parseInt(“”); // NaN
parseInt(“0xa”); // 10
parseInt(22.5); //22
parseInt(“70”,8); //56 (指定基数,即8进制)
parseInt(“10”,2); // 2
3. parseFloat() 用于字符串类型(忽略前面的空格),只解析10进制
parseFloat(“1234blue”); //1234
parseFloat(“0xA”); //0
parseFloat(“22.34.5”); //22.34
parseFloat(“0908.5”); //908.5
parseFloat(“3.125e7”); //31250000
String类型:可以用双引号,也可以用单引号表示。
除了null与undefined值没有toString(),其他都有。但是null与undefined可以调用String(),返回相应的字符串。即null值返回“null”,undefined值返回“undefined”。
toString()可以传入基数参数,表示输出的进制表示,如:
var num = 10;
number.toString(2); // “1010”
要把某个值转换为字符串,可以使用加号操作符把它与一个空字符串(””)加在一起。
with语句:
with语句的作用是将代码的作用域设置到一个特定对象中。目的是简化多次编写同一个对象的工作。例子见···
但是大量使用with语句会导致性能下降,同时也会给调试代码造成困难,因此在开发大型应用程序时,不建议使用with语句。
switch语句:
switch语句在比较值时使用的是全等操作符,因此不会发生类型转换(例如,字符串“10”不等于数值10).
函数的返回值:
除了return语句外,没有任何声明表示该函数返回一个值。另外,return语句也可以不带任何返回值,此时,函数在停止执行后将返回undefined。
ECMAScript的函数参数:重点
命名的参数只提供便利,但不是必须的。解析器不会验证命名参数。
ECMAScript中的参数在内部是一个数组来表示的,可以通过arguments对象来访问这个参数数组,从而访问每一个参数。
修改arguments对象中的值会自动反映到对应的命名参数,但是修改命名参数不会改变arguments对应的值。没有传递值得命名参数将自动被赋予undefined值。
ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。
ECMAScript函数不能重载,能够重写。