js的一些特性

1.对象的属性名使用引号的疑惑

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

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

var object = {

first_name: 'javascript',

city: 'shenzhen‘

}

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

var object = {

'first-name': 'javascript', //

first-name: 'javascript', 不合法包含-

city: 'shenzhen‘

 }

2.对象的检索

大家都是知道,要检索对象里的包含值,有两种方式,一采用xxx[‘xxx’],二采用.表示法。什么时候使用这两种方式,更合理些呢,请看下面:

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

var object = {

 first_name: 'javascript', city: 'shenzhen'

}

console.log(object.first_name); // '.'表示法

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

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

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

3.+号在javascript的使用

"+"在其他语言中只是用作加法运算,但在js中它有两个功能加法元算及字符串连接符。

 其一,做字符串连接符使用时,拼接字符串作用。

var str = 'hello';

 var result = str + ' world';

console.log(result); // hello world

 其二,做加法运算

var val1 = 5, val2 = 6 , sum = 0;

sum = val1 + val2; console.log(sum) // 11

+还有就是可以起到转换数据的作用,如:

var str = '123';

console.log(+str)

console.log(typeof +str); // number

var date = new Date();

console.log(+date); // 转换成日期毫秒数

在日期对象前面加个+就能转换成日期毫秒数,而不需要使用其getTime方法,大家是不是觉得很奇妙。

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

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

当使用==时,会进行强制类型转换

var arg = '';

if(arg == 0){

 alert('类型转换成功!'); // 执行这句

}

else{ alert('类型转换失败!');

}只进行值的比较,会强制转化为相同的类型,在进行比较。

当使用===时,直接比较直,不会进行强制类型转换

var arg = '';

if(arg === 0){

 alert('类型转换失败,只能同类型比较!'); // 执行这句

}既比较值有比较类型。,严格比较。

5.parseInt()

说到这个大家都用的很熟啦,他有两个参数,第一个是要传入转换的字符串,第二个是要解析的数字的基数。第二基数是很关键的,在我之前使用的经常不写第二参数,因为默认是10进制的。但是有的浏览器是会根据字符串也判断要转换的进制数据

var str = '09' ;

console.log(parseInt(str)); // 有的浏览器是0

为了避免这种兼容问题最好是带上第二个参数,就不会有这个兼容问题。

var str = '09' ;

 console.log(parseInt(str, 10)); // 9

http://www.cnblogs.com/qiheng/p/3496432.html

原文地址:https://www.cnblogs.com/fangdx/p/3972962.html