JavaScript高级程序设计——第3章:基本概念

3.4 数据类型

1)typeof是操作符,而不是函数,所以typeof()中的括号不是必需的:

var message="hi";

alert(typeof message);

2)undefined值派生自null值,alert(null==undefined)//true

3)可以对任何数据类型调用Boolean()函数,而且总会返回一个Boolean值。至于返回的这个值是true或false,取决于要转换的数据类型及其实际值。

数据类型  转换为true值  转换为false值 
 Boolean  true false 
 String  任何非空字符串 空字符串 
Number   任何非零数字值(包括无穷大) 0和NaN
Object   任何对象 null 
undefined   n/a(或N/A)是 not applicable缩写,意为“不适用” undefined 

4)永远不要做下面这种测试,a+b的实际结果是0.30000000000000004。关于浮点数值计算会产生舍入误差的问题,这是使用基于IEEE754数值的浮点计算的通病。ECMAScript并非独此一家,其它使用相同数值格式的语言也存在这个问题。

a=0.1;

b=0.2;

if(a+b=0.3){//不要做这样的测试

alert("You got 0.3");

}

5)数值范围

ECMAScript能够表示的最大值保存在Number.MAX_VALUE中,能够表示的最小数据保存在Number.MIN_VALUE中,超出这个数值范围的值,自动转换成Infinity(正无穷)和-Infinity(负无穷)。isFinite()函数确定一个数值是不是有穷的。

3.7 函数

定义的函数只接收两个参数,在调用这个函数的时候不一定要传两个,可以传一个、三个或者不传,解析器永远不会有怨言。这是因为ECMAScript中函数的参数是用一个数组表示的,函数接收到的始终是这个数组,在函数体内可以通过arguments对象来访问这个参数数组。arguments对象只是与数组类似(它不是Array的实例),因为可以使用方括号语法访问它的每一个元素(即第一个元素是arguments[0]......)。

原文地址:https://www.cnblogs.com/SmileX/p/5630150.html