zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    shell脚本查找tcp过多ip地址封掉
    tomcat日志传参乱码问题
    nginx部署vue跨域proxy方式
    nginx部署VUE跨域访问api
    springboot2.1.3 + redisTemplate + Lock 操作 redis 3.0.5
    java8 lamb表达式对List排序
    Mysql5.7降级到5.6遇到的坑
    mac中git使用
    mac中git flow使用
    mac安装openjdk8-maven-mysql-git-docker
  • 原文地址:https://www.cnblogs.com/fangdx/p/3972962.html
Copyright © 2011-2022 走看看