标签:
最近又开始重新阅读《javascript高级程序设计》了,记忆中这是第三次了,但是前面都是走马观花式的过了,这次还是需要好好整理和实践一番了。
虽然是一些基础概念,但是还是有好多容易注意的地方,不知道它的玄机还有这么多,特在此记录一下,防止自己忘记,同时也能增加自己的理解
(1)javascript中共有5种简单的数据类型:Undefined,Null,Boolean,Number,String,一种复杂的数据类型Object
(2)typeof操作符
在javascript中,typeof和instanceof是两个很值得讲的点,要记住typeof不是函数而仅仅是简单的操作符,其中有两点需要注意:
1:typeof(null)返回的是Object,因为null被认为是一个空的对象引用
2:typeof(function)会返回function
(3)对于null和undefined值,它们有很多共同点:
1:在对它们进行相等操作符的时候:alert(null == undefined)时返回的是true,
2:Null和Undefined数据类型都只有一个值,分别就是null和undefined
3:undefined和null在对它们进行Boolean()强制类型转换的时候,返回的都是false
4:null和undefined都没有toString()函数。
(4)在进行Boolean()强制类型转换的时候,false,"",0,NaN,null,undefined都会转换为false,其他的都会转换为true
(5)Number类型
1:由于保存浮点数值需要的内存空间是整数数值的两倍,所以js会自动将浮点数转化为整数类型(如果可以的话)
2:js在进行浮点运算的时候会出现精度过低的bug,导致0.1+0.2之后得到的不是0.3,所以在进行浮点运算的时候要格外小心
3:一旦某一次运算出现了+Infinity或者-Infinity,那么该值将无法继续擦参与下一次的计算,因为Infinity是不能参与运算的
4:对于NaN来说,任何设计NaN的操作都会返回NaN,NaN和任何值都不相等,包括自身,所以在执行下面的操作的时候,返回的将是false:
Alert(NaN==NaN);
5:Number()可以将任何数据类型转为数值类型,而parseInt和parseFloat只能将字符串转化为数值类型
对于Number来说,
Number(null);返回0 Number(“”)返回0
Number(undefined)返回 NaN
对于parseInt来说,
parseInt(“”); 返回NaN
parseInt可以转化8进制和16进制的值,但是在ECMAScript5中,parseInt没有转化8进制的能力了
对于parseFloat来说,它只能解析十进制的数值,所以他没有用第二参数指定基数的用法
(6)逻辑与和逻辑或操作
与:1:当第一个操作数是对象,则返回第二个操作数
2:当两个操作数都是对象的时候,则返回第二个操作数
3:如果有一个NaN操作数,则返回null,
4:如果有一个操作数是undefined,则返回的是undefined
则执行下面的操作的时候,返回的是2
Alert(1.&&2);
或:1:当第一个操作数是对象的时候,返回的是第一个操作数
2:当两个操作数都是对象的时候,返回的是第一个操作数
3:如果有一个NaN操作数,则返回null,
4:如果有一个操作数是undefined,则返回的是undefined
则执行下面的操作的时候,返回的是1
Alert(1||2);
(7)加减乘除运算符
乘:1:Infinity和0相乘的时候,结果为NaN
2:Infinity和非0数值相乘,返回的是Infinity
除: 1:如果是零被零除,结果是NaN
2:Infinity被Infinity除,结果是NaN
加: 1:Infinity和-Infinity相加,结果为NaN
2:+0和-0相加,结果为+0
减 1:-Infinity和Infinity相减,结果为NaN
(8)在一个函数中,位于return语句之后的任何代码都永远不会执行
(9)Js中没有函数的重载,即使两个函数定义为相同,后面的那一个永远会覆盖前面的那一个
标签:
原文地址:http://my.oschina.net/sunshinewyf/blog/529224