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数据格式,代码块。