JS一些需要注意的知识点

1.对象的属性名使用引号与不使用引号的区别

  当我们在申明一个对象字面量的时候,经常看到对象的属性名有的有引号,有的没有,那时候我就是觉得非常困惑,它们之间的区别是:

 1.1 当对象的属性名是合法的标识符且不是保留字时,是不需要使用引号的,当然使用也没有问题,只不过是多此一举而已。

var object = {
    first_name: ‘javascript‘,
    city: ‘shenzhen‘
}

 1.2 当你的对象属性名包含不合法的标识符或是保留字的话,就必须使用引号。

var object = {
    ‘first-name‘: ‘javascript‘,
    //first-name: ‘javascript‘, 不合法包含-
    city: ‘shenzhen‘
}

2.对象的检索

  大家都是知道,要检索对象里的包含值,有两种方式,一采用xxx[‘xxx‘],二采用.表示法。我不知道大家看到这两个检索方法,你有何看法,你知道其中的差异没有。

  2.1 如果字符串表达式是一个字符串字面量,而且它是一个合法的javascript标识符且不是保留字,建议使用"."表示法代替,因为它更加紧凑且可读性更好。

var object = {
    first_name: ‘javascript‘,
    city: ‘shenzhen‘
}
console.log(object.first_name);  // ‘.‘表示法

  2.2 当然xxx[‘xxx‘]也是有其优势的,例如检索的对象的属性名不是合法的或是保留字,它就是派上用场。

var object = {
    ‘first-name‘: ‘javascript‘,
    //first-name: ‘javascript‘, 不合法包含-
    city: ‘shenzhen‘
}

onsole.log(object[‘first-name‘]) // javascript 

console.log(object.first-name) // NaN 

 2.3xxx[‘xxx‘]还有一个更重要的作用是,当它要检索的属性名是动态变化的(变量)时,必须使用xxx[‘xxx‘]这种方式。

for(var att in object){
    console.log(object[att]);
}

3.==,!= 和===,!==的差异

当使用==和!=时,会进行强制类型转换,其实这是很糟糕的做法,可能会掩盖因类型引发的错误,还会影响性能。当使用===和!==时,直接比较直,不会进行强制类型转换

4.parseInt()

  parseInt有两个参数,第一个是要传入转换的字符串,第二个是要解析的数字的基数。建议使用parseInt时写第二个参数,因为有的浏览器对他的解释方式不同,有的默认十进制,有的根据第一个参数写法来决定。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。