最近又开始从新阅读《javascript高级程序设计》了,记忆中这是第三次了,可是前面都是蜻蜓点水式的过了,此次仍是须要好好整理和实践一番了。javascript
虽然是一些基础概念,可是仍是有好多容易注意的地方,不知道它的玄机还有这么多,特在此记录一下,防止本身忘记,同时也能增长本身的理解java
(1)javascript中共有5种简单的数据类型:Undefined,Null,Boolean,Number,String,一种复杂的数据类型Object函数
(2)typeof操做符spa
在javascript中,typeof和instanceof是两个很值得讲的点,要记住typeof不是函数而仅仅是简单的操做符,其中有两点须要注意:设计
1:typeof(null)返回的是Object,由于null被认为是一个空的对象引用 对象
2:typeof(function)会返回functionip
(3)对于null和undefined值,它们有不少共同点:内存
1:在对它们进行相等操做符的时候:alert(null == undefined)时返回的是true,字符串
2:Null和Undefined数据类型都只有一个值,分别就是null和undefinedit
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中没有函数的重载,即便两个函数定义为相同,后面的那一个永远会覆盖前面的那一个