&
按位与运算符,对两个数字转化为32位表达式,按位做与运算。
// 9 is 00000000000000000000000000001001
var expr1 = 9;
// 5 is 00000000000000000000000000000101
var expr2 = 5;
// 1 is 00000000000000000000000000000001
var result = expr1 & expr2;
document.write(result);
// Output: 1
<<
左移运算符,对一个数字转化为二进制整体向左移,每移动一位相当于整体乘二。
var temp = 14 << 2; //56
//相当于14*2^2
var temp1 = 14;
temp1 <<= 2;
//相当于
var temp1 = 14<<2;
>>
右移运算符,对一个数字转化为二进制整体向右移,每移动一位相当于整体除二。
var temp = 100 >> 2; //25
//相当于100/2^2
~
按位取反运算符,首先将取反对象转化为数字,当无法转化报错;将数字转化为二进制,执行位非运算。
计算的结果为原先数值加一再取反。(~5===-6)
|
或运算符,var a=b|c;
,当第一个参数不为false(0、undefined、”、“”),等于第一个参数;否则以同样的方法去验证第二个参数,验证成功则等于第二个参数,否则等于false。
当判断二进制数,进行按位比较,全为0得0,否则取1。
^
亦或运算符,相同为0不同为1。
,
逗号运算符,以基本的for循环为例for (i = 0; i < 10; i++, j++)
,会以从左到右的顺序执行表达式。
test ? expression1 : expression2
三元(三目)运算符。
- 如果 test 为 true,则返回表达式expression1。
- 如果 test 为 false,则返回表达式expression2。
in
in运算符,判断一个对象中是否含有某属性。
var object={name:"tete"};
result = name in object;
若存在返回true,否则返回false。
instanceof
判断一个对象是否属于另一个对象的实例
var a=function () {
console.log(this); //window object
}
a();
console.log(a instanceof Function); //true
var m=new Number(5);
console.log(m); //typeof Number;PrimitiveValue:5
console.log(m instanceof Number); //true
var arr= [10,12];
console.log(arr instanceof Array); //true
&&
逻辑与运算
当expression1不为false(null,0),会执行expression2,否则将expression1的值赋给result,当expression1和expression2的值都为假result值为假。
var result= expression1 && expression2;
懒加载:…
…
- 传递多个参数
te(6,5,67,1,323,15,48,8);
function te(...ms){
console.log(ms);
}
- 连接数组
var a, b, c, d, e;
a = [1, 2, 3];
b = "dog";
c = [42, "cat"];
// Using the concat method.
d = a.concat(b, c);
// Using the spread operator.
e = [...a, b, ...c];
console.log(d); // 1, 2, 3, "dog", 42, "cat"
console.log(e); // 1, 2, 3, "dog", 42, "cat"
>>>
无符号右移运算
- 转换为32位(单精度浮点数)
- 整体向右移动两位
var temp
//-14二进制补码为 11111111 11111111 11111111 11110010
temp = -14
temp >>>= 2
console.log(temp) //1073741820
void
计算其表达式,并返回undefined,如:
href="javascript:void(0)"
END