zoukankan      html  css  js  c++  java
  • 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中的奇思妙用,欢迎留言交流。

  • 相关阅读:
    jmeter实战
    安卓学习进度_11
    安卓学习进度_10
    安卓学习进度_9
    安卓学习进度_8
    安卓软件学习进度_7
    安卓学习进度_6
    安卓软件学习进度_5
    安卓软件学习进度_4
    安卓软件学习进度_3
  • 原文地址:https://www.cnblogs.com/qiheng/p/3496432.html
Copyright © 2011-2022 走看看