我最近编写的代码没有像我预期的那样工作,它是:
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。