我最近编写的代码没有像我预期的那样工作,它是:
message = 'Thank You';
type = 'success';
message = message || type == 'success' ? 'Success' : 'Error';
对我来说这是个新闻,最后message
设置为“成功”。
我认为,由于 message 的真实值是,的true
右侧or
不会评估。
OR右侧的括号解决了这个问题,但我仍然不明白为什么要评估右侧
我最近编写的代码没有像我预期的那样工作,它是:
message = 'Thank You';
type = 'success';
message = message || type == 'success' ? 'Success' : 'Error';
对我来说这是个新闻,最后message
设置为“成功”。
我认为,由于 message 的真实值是,的true
右侧or
不会评估。
OR右侧的括号解决了这个问题,但我仍然不明白为什么要评估右侧
您的代码相当于
message = ( message || type == 'success' ) ? 'Success' : 'Error';
这就是为什么。:)
的值message
不会以"success"
but结束"Success"
。
运算符的?
优先级低于||
运算符,因此代码计算为:
message = (message || type == 'success') ? 'Success' : 'Error';
message || type == 'success'
will的结果是"Thank You"
,当它被评估为?
运算符的布尔值时,结果是true
。