JavaScript常见的运算符优先级面试题 |
您所在的位置:网站首页 › javascript运算符的优先级最高 › JavaScript常见的运算符优先级面试题 |
文章目录
小试牛刀前言基础关联性参考文献
实际应用的坑&&与||三元运算符和==加减乘除和取模前置递减、前置递增和&&typeof和三元运算符加减乘除和大小于&&和三元运算符
总结
小试牛刀
来看看这样一道题目 console.log(true || false && false)返回的是什么? 到底是true还是false ? 如果你对这道题目是一知半解的,那么这篇文章很适合你! 前言运算符优先级的知识点真的很重要,例如如何判断 && 和 || 的运算优先级。如果你不能掌握这些基础知识点。你甚至算不上一个初级程序员。 在学校或是培训机构,老师只会告诉你,() 括号运算符的优先级最高。在不能判断运算符优先级顺序的时候,使用 () 。这确实是个好办法,但作为有上进心的有为青年,一定要学会判断运算符优先级。 基础计算机编译程序是从左往右的,但是运算符却不尽然。这里有一个知识点,叫做关联性。 关联性关联性是运算符优先级里很重要的一个概念,它决定了拥有相同优先级的运算符的执行顺序。 通常有三种关联性,分别为左关联,右关联和无关联 a OP b OP c; 左关联(左到右)相当于把左边的子表达式加上小括号(a OP b) OP c,右关联(右到左)相当于a OP (b OP c) 参考文献取自 MDN web docs 优先级运算类型关联性运算符21圆括号n/a(不相关)( … )20成员访问从左到右… . …需计算的成员访问从左到右… [ … ]new (带参数列表)n/anew … ( … )函数调用从左到右… ( … )可选链(Optional chaining)从左到右?.19new (无参数列表)从右到左new …18后置递增(运算符在后)n/a … ++后置递减(运算符在后)… --17逻辑非从右到左! …按位非~ …一元加法+ …一元减法- …前置递增++ …前置递减-- …typeoftypeof …voidvoid …deletedelete …awaitawait …16幂从右到左… ** …15乘法从左到右 … * …除法… / …取模… % …14加法从左到右 … + …减法… - …13按位左移从左到右… …无符号右移… >>> …12小于从左到右… = …in… in …instanceof… instanceof …11等号从左到右 … == …非等号… != …全等号… === …非全等号… !== …10按位与从左到右… & …9按位异或从左到右… ^ …8按位或从左到右… | …7逻辑与从左到右… && …6逻辑或从左到右… || …5空值合并从左到右… ?? …4条件运算符从右到左… ? … : …3赋值从右到左… = …… += …… -= …… **= …… *= …… /= …… %= …… = …… >>>= …… &= …… ^= …… |= …… &&= …… ||= …… ??= …2yield从右到左yield …yield*yield* …1展开运算符n/a... …0逗号从左到右… , … 实际应用的坑 &&与||看如下代码 console.log(true || false && false) // true这是一个很经典的例子,如果我们不知道 && 的优先级比 || 高,我们肯定以为返回值是false。 三元运算符和== let value = "3" let index = 3 let flag = value == index ? 1 : 2 console.log(flag) // 1等号(==)和全等号(===)的优先级是比三目运算符更高的。所以要先算前面的value == index,返回值是true。最终结果为1 如果三目运算符的优先级比等号高,那结果将会完全相反。返回值将会是false 加减乘除和取模 console.log(1 + 2 * 3 % 4) // 3先算乘除和取模再算加减。 tip:乘除和取模的运算符优先级是一样的,所以从左到右开始计算。 前置递减、前置递增和&& let number = 1 console.log(--number && 7) // 0 let number2 = 0 console.log(++number2 && 7) // 7前置递减、前置递增的运算符优先级比&&高,先算递减 typeof和三元运算符 let flag = false console.log(typeof flag) // boolean console.log(typeof flag ? '2' : 1) // 2typeof的计算运算级比三元运算符高,所以返回的是2。 加减乘除和大小于 let number = 3 console.log(number + 4 > 6) // true console.log(number * 2 > 5) // true加减乘除的运算符优先级比大小于高,先计算加减乘除 &&和三元运算符 console.log(1 && 0 ? 3 : 2) // 2&&的运算级比三元运算符更高,先计算&& 总结运算符优先级是很大一个模块,它的难度非常高! 大家一定要多花时间研究研究。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |