《Javascript高级程序设计》学习记录(一)

最近又开始从新阅读《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中没有函数的重载,即便两个函数定义为相同,后面的那一个永远会覆盖前面的那一个

相关文章
相关标签/搜索