为了转生而点技能-JavaScript,day4(运算子特性-precedence与associativity

运算子特性

1. 优先性(precedence):指的是一行程式列中如果才在2个以上的运算子,会依照优先顺位,顺位高的先执行,优先性顺位表可以参考MDN的表格(Table)。

这边附上常见平方、加、减、乘、除的优先顺位(表格内的数字)以及下面会谈到的相依性。
http://img2.58codes.com/2024/20143762Smtm2kzlUu.jpg

var a = 3 * 3 + 4 * 4 //乘号的优先性比加号高所以优先运算。

2. 相依性(associativity):每个运算子的相依性都有所不同,而相依性决定运算的方向;当优先序相同时,使用相依性决定运算方向。

右相依性(right-associativity):表示处理顺序为从右至左,赋值运算子。 (Assignment operators)、单元运算子、平方运算都是右相依性。
let a = 3;console.log(a **= 2);// expected output: 9console.log(a **= 0);// expected output: 1let a = 2;console.log(a *= 3);// expected output: 6
左相依性 (Left-associativity) ,表示处理顺序为从左至右,常见的2元运算子:加减乘除都是。

例子:

第一题:

a = b = 3;

解:
步骤一:b = 3;3赋予变数b。
步骤二:b = 3因为是表达式;所以回传新的值(来自b = 3的结果)。
步骤三:a = (来自b = 3的结果),值赋予变数a。

第二题:

console.log(1 < 2 < 3);//tureconsole.log(3 < 2 < 1);//false

解:console.log(1 < 2 < 3)why是ture。
步骤一:console.log(1 < 2):true。
步骤二:console.log(true < 3):此时涉及隐式转换,boolean值转Number时;true为1,false为0。
步骤三:console.log(1 < 3):true。

第三题:

        var x = 5;        var y = 10;        var z = 25;        x = y        console.log(x, y);      //10,10        x = y = z        console.log(x, y, z);   //25,25,25        y = x = z        console.log(x, y, z);   //25,25,25
注意,这边的Z在同一时刻内,会同时分别赋值与x及y!!!!

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章