js操作符+和()

     ECMA-262 描述了一组用于操作数据值的操作符,包括一元操作符、算数操作符逻辑操作符、关系操作符、赋值操作符、字符串操作符、对象操作符等。ECMAScript 操作符的与众不同之处在于,它们能够适用于很多值,例如字 符串、数字值、布尔值,甚至对象。不过,在应用于对象时,相应的操作符通常都会调用对象的 valueOf() 和(或)toString()方法,以便取得可以操作的值。

    下面说说几个比较流行的用法。

1、使用+操作符转变成Number类型。

    或者前面讲到的高维数组降阶等;

    比如: +(new Date())                       //转成时间戳

              “*******.js?v=”+~(-new Date())  //防止缓存增减版本号

2、短路

    &&:用来检测对象是否存在并进行后续操作。 

    if(object && object.name && object.name = 'leaf'){ }//先判断object是否存在,存在才继续往后解析。

    || :用来给函数参数提供默认值。 

    function(obj){

  obj = obj ||  {}   //如果没传参,则将一个空对象传给obj;

    }

3、分组操作符(),括号内只能包含表达式

    var num = (1,323,5,6)  //num等于最后一个数;

    转化为表达式: eval('('+json+')');

    (function f(){})()   //加上(),函数声明就可以直接调用了,这是因为()把里面的函数声明转成表达式了。

   //再看一个

  try {
    (var x = 5); // 分组操作符只能包含表达式,不能包含语句(这里的var就是语句)(x=5)这就是正确的。
  } catch(err) {
    // SyntaxError(因为“var x = 5”是一个语句,而不是表达式——对表达式求值必须返回值,但对语句求值则未必返回值)
  }

4、使用花括号({})来定义对象字面量,JSON数据格式,代码块。 

 

posted @ 2017-05-02 23:27  leaf+  阅读(1019)  评论(0)    收藏  举报