javascript - 请教一下JS运算符:“||” 和 “?:” 的问题。
巴扎黑
巴扎黑 2017-04-11 13:29:23
[JavaScript讨论组]
    

请问为什么a>b||a*=10会报错?

巴扎黑
巴扎黑

全部回复(2)
大家讲道理

先感谢楼下,根据楼下的回答,根本原因在于运算符优先级
首先看一张表,来自于

https://technet.microsoft.com/zh-cn/library/z3ks45k7

接下来进行分析

a>b ? a*=1 : a*=10

查表得知,三目运算符的优先级大于 *=
所以执行顺序为由左至右。

a>b||a*=10

查表得知
>优先级>||优先级> *= 优先级
所以执行顺序为(a>b||a)*=10
左边是10不是变量,所以报错

PHP中文网

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 不能做赋值表达式的左侧值。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号