运算优先级的例子

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

</body>
</html>
<script type="text/javascript">

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('因为两个都不成立,所以这里面的不打印');
}


</script>
原文地址:https://www.cnblogs.com/Scar007/p/7640631.html