`
king_tt
  • 浏览: 2112213 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript的那些事儿你都懂了吗

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics