一.数据类型
基本数据类型 :
Undefined Null String Number Boolean
复杂数据类型:
Object
(1)
Undefined 只有一个值:undefined
Null 只有一个值:null
(2)undefined 与null区别
undifined:表示”缺少值”,就是此处应该有一个值,但是还没有定义
使用var声明的变量但是未初始化,变量的值就是undefined 调用函数时,应该提供的参数没有提供,该参数等于undefined 对象没有赋值的属性,其值为undefined 函数没有返回值时,默认返回undefined 转换为数值是0null:表示”没有对象”,即该处不应该有值; null值表示一个空对象指针
定义的变量将来用于保存对象,最好将变量初始化为null而不是其他值 对象原型链的终点: Object.getPrototypeOf(Object.prototype) //null 转换为数值是 NaN null == undefined结果为true 2.2 Number
IEEE754表示整数和浮点数值
整数:十进制,八进制(首位0),十六进制(前两位0x)
浮点数:
不要使用:a+b == 0.3
数值范围:
Number.POSITIVE_INFINITY: Infinity 正无穷 ;Number.NEGATIVE_INFINITY: -Infinity 负无穷 确定一个数值是不是有穷的:
isFinite(variable)
参数位于最大值与最小值之间会返回true
NaN:
not a number
isNaN(variable)
接受任何类型的参数,该函数确定该参数是否“不是数值” isNaN会尝试将传入的参数值转换为数值,任何不能被转换为数值的值返回trueisNaN(NaN) // true
isNaN(10) // false(10是一个数值)
isNaN("10") // false(“10”可以被转换为数值10)
isNaN("blue") // true(不能转换为数值)
isNaN(true) // false(可以转换为数值1) 也适用于对象。在基于对象调用时,会先调用对象的valueOf() 函数,然后确定该方法返回的值是否可以转换为数值;如果不能,则调用对象的 toString() 函数,再测试返回值。
类型转换:Number() parseInt() parseFloat()
Number()转换规则:
Boolean值,true 转换为 1,false 转换为 0 数字值,只是简单的传入传出 null 转换为 0;undefined 转换为 NaN 字符串:
4.1 字符串中只包含数字(包括正负号):转换为十进制数值,注意前导0会被忽略
4.2 有效的浮点数会转化为浮点数值
4.3 有效的十六进制转换为相同大小的十进制数值
4.4 空字符串转换为 0
4.5 如果字符串包含上述格式之外的字符,转换为 NaN
4.6 不能正确转换八进制(开始的0被识别为前导0而忽略)
parseInt()转换规则
对字符串进行转换时,会忽略字符串前面的空格,直到找到第一个非空格字符串。 如果第一个字符不是数字字符(可以识别各种进制的整数格式)或负号,则返回NaN; 如果第一个字符是数字字符,则会继续解析第二个字符,直到完全解析或者遇到非数字字符 如字符串是以“0x”开头,且后面跟数字字符,则作为十六进制整数,返回转换为十进制的数值; 如果是以“0”开头且后面跟数字字符,则作为八进制 (ECMAScript 3),在ECMAScript 5中,不能解析八进制,会忽略前导0可以提供第二个参数–转换进制时使用的基数 var num1 = parseInt("123456zzz"); // 123456 var num2 = parseInt(""); // NaN var num3 = parseInt("-1"); // -1 var num4 = parseInt("+5"); // 5 var num5 = parseInt("07"); // 7 var num6 = parseInt("08"); // 8 var num7 = parseInt("0xA"); // 10 var num8 = parseInt("0xAZ"); // 10 var num9 = parseInt("22.5"); // 22 2.3 String 单引号或双引号表示 字符串一旦创建,其值不可变 字符字面量:
\n 换行 \t 制表 \b 退格 \r 回车 \f 进纸 \\ 斜杠 \'单引号 \" 双引号 \xnn 以十六进制nn表示的一个字符(其中n为0~F) \unnn 以十六进制nnnn表示的Unicode字符(其中n为0~F) 将值转换为字符串
a. 使用加号操作符
b. 使用toString()方法—注意:null 和undefined没有这个方法
c. 使用String()—不知道是否是null 或undefined可使用这个方法
null转换为“null” undefined转换为 “undefined” 2.4 Boolean
只有两个字面值:true false
数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 空字符串 Number 任何非0数字值(包括无穷大) 0 和 NaN Object 任何对象 null Undefined N/a undefined 2.5 ObjectObject的每个实例都具有下列属性和方法:
constructor
hasOwnProperty(propertyname)
isPrototypeOf(object)
propertyIsEnumerable(propertyname)
toLocaleString()
toString()
valueOf()
参考:
【1】
【2】Javascript 高级程序设计 美 Nicholas
typeof 可以检测出的类型有:
undefined 、 number 、string、 boolean 、function、 object