javascript从开始的验证表单的脚本语言发展到现在能运行在服务器上,其影响力不断的提升。自己作为一个做前端的,编写js是必不可少,从自己学习js的历程来看其实也是比较吃力。要 学好它,还是的花费一些精力。下面来说说我学习到的一些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.+号在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
以上讲的知识都是很基础但是很实用的技术基础,当我们有了牢固的基础,那后面的复杂程序就是在这些基础上累加的。我也是走在js路上的人,很多知识点都还在学习积累中。希望我这文章对基础还不是很好的同学有所帮助。我写这个也是抛砖引玉,希望更多的高手能够留言指引更多js中的奇思妙用,欢迎留言交流。