从今天开始正式读JavaScript程序设计这本书,之前零零散散读过一段时间,但是没有坚持下去,重新读书,在此立志读完!
第三章:JavaScript基本概念
数据类型:
ECMAScript 中有5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂的数据类型—object。
typeof用于检测数据类型:typeof 11 ==>”number”.
typeof 是一个操作符而不是函数。
undefined:
var msg;
typeof msg ==>undefined
typeof msg1 ==>undifined
虽然检测的结果都一样,但是未定义的变量在使用时会报错。
null:
保存object类型的变量。typeof null ==>object
boolean:
虽然Boolean 类型的字面值只有两个,但ECMAScript 中所有类型的值都有与这两个Boolean 值等价的值。可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean值。
number:
数值可以是十进制整数,也可以是八进制或十六进制数值,在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。
1、浮点数:如果小数点后面没有跟任何数字,那么这个数值就可以作为整数值来保存。同样地,如果浮点数值本身表示的就是一个整数(如1.0),那么该值也会被转换为整数
极大或极小数用e表示:3.1e7 = 3.1*10^7,3e-7 = 0.0000003
浮点数值的最高精度是17 位小数,在进行计算时,往往得到的计算结果不精确:0.1+0.2 = 是0.30000000000000004。
2、NaN:NaN 与任何值都不相等,包括NaN 本身。isNaN()在接收到一个值之后,会尝试将这个值转换为数值,无法转化为数字的值会返回false。也可用于检测NaN类型。
例如:isNaN(null) ==>false,转化后为0。
在基于对象调用isNaN()函数时,会首先调用对象的valueOf()方法,然确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值再调用toString()方法,再测试返回值。
3、数值转换函数:Number()、parseInt()和parseFloat()
Number(null) ==>0
Number(undefined) ==>NaN
Number({}) ==>NaN,转化空对象返回NaN
Number(“a1”) ==>NaN,字符串只能是空或者内容为纯数字
parseInt()函数:它会忽略字符串前面的空格,直至找到第一个非空格字符。parseInt()转换空字符串会返回NaN。如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。例如,”1234blue”会被转换为1234,因为”blue”会被完全忽略。
parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。
string:
toString():数值、布尔值、对象和字符串值(没错,每个字符串也都有一个toString()方法,但null 和undefined 值没有这个方法。toString()可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格式表示的字符串值:
var num = 10;
alert(num.toString()); // “10”
alert(num.toString(2)); // “1010”
alert(num.toString(8)); // “12”
alert(num.toString(10)); // “10”
alert(num.toString(16)); // “a”
推荐转型函数String()方法:这个函数能够将任何类型的值转换为字符串。
Object:
Object 的每个实例都具有下列属性和方法:
- constructor:保存着用于创建当前对象的函数。
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定。
- isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
- toLocaleString()或toString():返回对象的字符串表示。
- valueof()返回对象的字符串、数值或布尔值表示,与toString()一样