控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

javascript的那些事儿你都懂了吗

作者:未知 出处:cnblog 2013年12月30日 阅读:

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中的奇思妙用,欢迎留言交流。

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统