扫码关注官方订阅号
请问为什么a>b||a*=10会报错?
先感谢楼下,根据楼下的回答,根本原因在于运算符优先级首先看一张表,来自于
https://technet.microsoft.com/zh-cn/library/z3ks45k7
接下来进行分析
a>b ? a*=1 : a*=10
查表得知,三目运算符的优先级大于 *= 所以执行顺序为由左至右。
a>b||a*=10
查表得知>优先级>||优先级> *= 优先级所以执行顺序为(a>b||a)*=10左边是10不是变量,所以报错
chrome console
a>b||a*=10 ReferenceError: Invalid left-hand side in assignment (a>b||a)*=10 ReferenceError: Invalid left-hand side in assignment 10*=10 ReferenceError: Invalid left-hand side in assignment
看一下三个式子的等价演变,
知道了吧,10 不能做赋值表达式的左侧值。
10
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
先感谢楼下,根据楼下的回答,根本原因在于运算符优先级
首先看一张表,来自于
接下来进行分析
查表得知,三目运算符的优先级大于 *=
所以执行顺序为由左至右。
查表得知
>优先级>||优先级> *= 优先级
所以执行顺序为(a>b||a)*=10
左边是10不是变量,所以报错
chrome console
看一下三个式子的等价演变,
知道了吧,
10不能做赋值表达式的左侧值。