js高级程序设计,总结:

  前两天看了js高级编程的前两章,这两章时一些叙述性的东西,大部分是介绍了js的发展历史和与es5之前的一些差异。今天看了第三章,这章讲述了基础的知识点。

1.Number()和parseInt()、parseFloat()之间的区别:
(1)Number()适用于任何的数据类型的转换,ParseInt和ParseFloat只是适用于将字符串转换为数值
(2)Number()可以将空字符串转换为0, 而后者是以读取到的第一个数字字符为标准,所以它在对空字符继续进行转换的时候,由于一直没有读取到数值字符,所以回返回NaN
(3)Number()只能识别十六进制的数值,对八进制的数值不会识别,它会直接忽略前导0,转换为十进制。后者可以通过再传递一个参数(基数)会对八进制和十六进制正常转换。 如:Number(’0Xaf’)和parseInt(‘0Xaf’, 16)
(4)parseFloat()会忽略前导0,只能识别第一个小数点,遇到第二个就停止解析,但会返回之前解析的数值。对十六进制的字符串进行解析的时候,直接返回的是0,这是和parseInt()的不同之处。
2.String()和toString()方法的区别:
String可以将任何类型的数值转换为字符串,后者对于大部分的值可以转换为字符串,但对null和undefined不行,因为这两个数值没有toString()方法,只能进行强制转换
3.Object类型
(1)可以通过new进行创建,对象中常用的属性和方法有这几个:Construct()(这里存放的是创建对象的函数)、hasOwnProperty()(里面的参数必须是字符串,可以判断一个对象实例中是否有这个属性)、isPrototypeOf(obj)(判断传入的对象是否是另一个对象的原型),这里在属性和方法在原型的应用中会见到。
(2)对象有个valueOf()方法,第一次见到,var o = {valueOf: function() {return -1;}} 这样o的值就是-1,这里的valueOf会返回对象的字符串、布尔值、数值的表示
4.逻辑与(&&)和逻辑或(||)
(1)逻辑与和逻辑或都属于短路操作,即有一个值为符合条件的话就不会再去求职第二个值,这在平常的代码中经常看到,尤其是逻辑或操作。
(2)逻辑与就是只要其中一个操作数是NaN、null、undefined那么返回的结果就是这些数,如果第一个操作数为对象,则返回第二个操作数。如果第二个操作数为对象,则在第一个操作数为true的情况下,返回第二个操作数。如果两个操作数都是对象,则返回第二个操作数。
(3)逻辑或如果两个操作数都是NaN、null、undefined那么返回的结果就是这些数。如果第一个操作数为对象,则返回第一个操作数。如果第二个操作数为对象,则在第一个操作数为false的情况下,返回第二个操作数。如果两个操作数都为对象,则返回第一个操作数。

  1. ==和===
    
    由于undefined派生于null,所以他们只是类似的数值,并不是同一种类型的值,null是一个空对象,undefined是应该有值但是未定义。所以null == undefined(true),
    null === undefined(false)
    6.while循环和for循环的关系
    以前没有深入了解过这种关系,今天看到了感觉它们都是扣在一起的。如果while循环不能实现,那么for循环也不能实现,可以这样理解,for循环实在while循环的基础上进行演化的,其灵活性更加强大。比如:for(var i = 0; i < 10; i++) {}在代码块外面也可以访问到i,猛然一看给人一种错觉,但是因为他是while的转换,可以转换为这样,var i = 0;while (i < 10) {i++;}这样也可以在外面访问到i。所以再去理解for外面访问i的问题应该就不难了。
    7.for...in语句
    这是进行循环对象属性的循环语句,在使用前要先确定该对象的值不是null或者undefined否则改循环代码不会执行,也不抛出错误。在循环过程中,属性的先后顺序可以不同,这是因浏览器的差异导致的。
    以上是今天看书后的总结,继续加油!

你可能感兴趣的:(js高级程序设计,总结:)