第三章--数据类型
2016-04-18 10:07 看完 阅读(309) 评论(0) 收藏 举报3.4--数据类型
数据类型分为 boolean , string, object , function , number,undefinde
3.4.1--typeof 操作符
typeof 操作符在safari5,chrome7以及之前版本 会将正则表达式 返回为"function",而在其他浏览器会返回"object"
console.log(typeof null); var message = "some string"; console.log(typeof message); console.log(typeof 95);
3.4.2--undefined类型
var message_2; console.log(message_2); console.log(message_2 == undefined); //true var message = undefined; console.log(message); //true
3.4.3--null类型
从逻辑角度讲,null是一个空对象指针,而这正是null类型为"object"的原因了
var car = null; console.log(typeof car); //object
实际上undefined值是派生于null值的,所以在ECMA-262相等测试返回true
console.log(null == undefined); //true
3.4.4--boolean值
var message_4 = "hellow world"; console.log(Boolean(message_4)); //true
任何非空字符串的boolean值为true , ""(字符串)为false
任何非零数字值的boolean值为true , 0和NaN(not a number)为false
任何oject对象的boolean值为true , null为false
任何n/a的undefined的boolean值为true , undefined 为false
3.4.5--Number类型
number 支持 八进制 和 十六进制的表示,所有八进制和十六进制表示的数值最终会转成十进制的数值表示
var intnum = 55; // 整数55 var octalnum = 070; //解析结果八进制的56 var octalnum_1 = 079; // 无效的八进制--解析为79 var hexNum = 0xA; //解析为十六进制的10 var hexNum_1 = 0x1f; //解析为十六进制的31
1.浮点数值
基于IEEE754格式来计算
var floatNum = 1.1; var floatNum_1 = .1 //有效,但不推荐 var floatNum1 = 10.0 //由于保存浮点数的内存是整数的两倍,所以ECMA会尽量把浮点数转换成整数 var floatNum_2 = 3.125e3; //表示3.125 * 10的3次方 var floatNum_3 = 3e-5; // 表示3*10的-5次方 var floatNum_4 = 0.1 + 0.2; //结果为0.30000000000000004 浮点数计算准度不如整数
2.数值范围
Number.MIN_VALUE 表示最小值5e-324
Number.MAX_VALUE 表示最大值1.7976931348623157e+308
超过以上两个数值会转换成 Infinity 和 –Infinity
3.NaN--not a number
isNaN(10); //false isNaN("blue") // true isNaN(NaN) //true isNaN(true) // false 可以转换成1
4.数值转换
var num1 = parseInt("123blue"); // 结果为123 var num2 = parseInt(""); // NaN var num3 = parseInt(0x1f); //31 var num4 = parseInt("AF", 16) // 表示AF的十六进制,第二个参数为几进制 var num5 = parseInt("AF") // NaN var num6 = parseInt("10", 2) //2(10的二进制解析) var num7 = parseInt("10", 8) // 8 (10的八进制解析) var num8 = parseFloat("0908.5") // 908.5会忽略前面的零 console.log(num8)
3.4.6—String
用string()方法可以把一个值转换为字符串
var value =11; console.log(String(value)) //"11"
3.5操作符
有递增操作符++ ,递减操作符--
var age = 29; age++//30 var age_2 = --age; //递减操作符要放在前面 console.log(age_2)
3.5.3--boolean操作符
!为逻辑非操作符(取相反值)
&&为逻辑与操作符(并且的意思),两个为true才可以为true,有一个false都不行
||为逻辑或操作符(或者的意思),有一个为true就可以。
3.5.5--加法操作符
字符串加数字,ECMAscript会将数字转换成字符串进行并接
如果想将计算结果加入字符串,就把数值执行加(),先执行求值再并接。
var result = (5) + "5"; var num1 = 10; var num2 = 20; var num3 = "The result is " + (num1 + num2) console.log()
3.5.6--关系操作符
// 如果比较两个值为数值的话,就按照正常大小比较 var result = 1 > 2; //false // 如果两个值为字符串的话,就按照字符串编码值比较 var result_2 = "Brick" < "alphate"; // true var result_3 = "23" > "3"; false // 如果一个值为数值,一个值为字符串,则转字符串为数值作为比较,如果转不了数值就转为NaN var result_4 = 23 > "3"; //true var result_5 = 23 > "a"; //false //如果数值和Boolean值进行比较就降Boolean值转为数值进行比较 var result_6 = 23 > false; //true //如果数值和Object进行比较,就把Object用ValueOf()方法或者用toString()方法转换进行比较 var result_7 = 23 > null; //true //相等== 和 全等=== ,相等是把两个操作数转换再比较,全等是两个操作数不转换来比较 //任何操作数和NaN比较都返回false var result_8 = ("23" == 23); //true var result_12 = (55 === "55"); //false var result_9 = (null == undefined); //true var result_10 = (null === undefined); //false var result_11 = (NaN == NaN); // false var result_13 = (NaN == 1); //false
3.5.10--都好操作符
可以一次声明多个变量。 用于赋值时,逗号操作符会返回最后一项
var num1 = 1 , num2 =2 ,num3 =3; var num=(1,2,3,4,5); // 5
浙公网安备 33010602011771号