逻辑符的运算优先级表(依据优先级从大到小分列)
优先级 运算范例 关联性 运算符
19 圆括号 n/a ( … )
18 成员接见 从左到右 … . …
需盘算的成员接见 从左到右 … [ … ]
new (带参数列表) n/a new … ( … )
17 函数挪用 从左到右 … ( … )
new (无参数列表) 从右到左 new …
15 逻辑非 从右到左 ! …
一元加法 从右到左 + …
一元减法 从右到左 - …
前置递增 从右到左 ++ …
前置递减 从右到左 -- …
typeof 从右到左 typeof …
void 从右到左 void …
delete 从右到左 delete …
14 乘法 从左到右 … * …
除法 从左到右 … / …
取模 从左到右 … % …
13 加法 从左到右 … + …
减法 从左到右 … - …
12 按位左移 从左到右 … << …
11 小于 从左到右 … < …
小于即是 从左到右 … <= …
大于 从左到右 … > …
大于即是 从左到右 … >= …
in 从左到右 … in …
instanceof 从左到右 … instanceof …
10 等号 从左到右 … == …
非等号 从左到右 … != …
全等号 从左到右 … === …
非全等号 从左到右 … !== …
9 按位与 从左到右 … & …
8 按位异或 从左到右 … ^ …
7 按位或 从左到右 … | …
6 逻辑与 从左到右 … && …
5 逻辑或 从左到右 … || …
4 前提运算符 从右到左 … ? … : …
3 赋值 从右到左 … = …
… += …
… -= …
… *= …
… /= …
… %= …
… &= …
… ^= …
… |= …
总结:
1、赋值操纵排在一切的比较末了,(num == 1)里的内用最优先运算。 2、成员接见的优先级在,()运算今后,在其他的运算之前。 3、函数的实行,在其他比较和运算符之前之前。 4、推断的优先级也在赋值 = 号的最前边。 5、逻辑与 和 逻辑或 要在摆布双方的运算完成今后,在举行 逻辑与 和 逻辑或 比较。
这里是运算优先级的例子
var obj = 1==1;
// console.log(obj);
var obj2 = 1>2;
var obj3 = 3*2;
var obj4 = !1 == 0; // 先运算 !1(1的取反),然后再和 == 0 ,举行比较,把比较的效果值赋给obj4
// 特别例子
var i = 0;
var obj5 = ++i; // 前置型递增,就是将i的值i自身再举行相加,然后再赋值给obj5
var obj6 = i++;// 后置型递增,就是将i的值先赋值给obj5,然后i自身再举行相加
console.log(obj6);
// 函数运算的优先级
var objOne = {
name: 'zhaoxuan',
method:(function () {
return function () {
this.method = 1;
return 'fn是一个字符串'
}
})()
};
// 函数运算实行的优先级,在赋值之前,先举行自实行函数运算,然后再把自实行函数运算的返回值,赋值给obj.method属性。
var fn = objOne.method();
console.log(fn);
// 这里也是,objOne.method();函数的运算优先,先将函数举行运算,然后再把返回值给fn,fn如今的值就是字符串‘fn是一个字符串’
// 逻辑与 和 逻辑或
// 逻辑与 比 逻辑或的优先级高。
console.log(1 && 2 || 0);
// 先举行 1&&2 运算,然后拿 1&&2的运算效果 2和0举行逻辑或运算 ,也就是(2 || 0)。
console.log(1 && true || 0);// true
console.log(1 && 0 || 3 && 1 && true);
// 逻辑与,两个前提都建立,返回效果才是true
var num1 = 2;
var num2 = true;
if (num1 && num2) {
console.log('这才是建立的');
}
var num3 = false;
if (num1 && num3) {
console.log('这是不建立的,所以不打印');
}
// true && false,第一个ture建立则返回第二个,假如,第一个不建立 false&&false,则直接返回第一个
console.log(false && true);
// 逻辑或 两个或许多个前提个中一个建立,则返回建立true
if( 1==1 || 2==0) {
console.log('这类或就建立的,由于1==1建立了');
}
// 假如两个都不建立,则就返回false
if( 1==3 || 2== 3) {
console.log('由于两个都不建立,所以这里面的不打印');
}