字符 加上 三元表达式 ?


a = 1
1
b = a? a: 2
1
a
1
b
1
c = 'c:' + b? b:2
1
c
1

console中的结果。
为什么 c 赋值时没报错,却把b的值赋给他?

阅读 3k
2 个回答

那不是赋值操作啊,那是+运算符,一个字符串+数字 = 字符串
但是+ 运算比 ? 运算优先级高。他其实是"c:1"?b:2
一个字符串肯定是真啊,所以返回1

因为'c:' + b等价于'c:' + 1,即'c:1'
三目运算对'c:1'判断truefalse,此时'c:1'为字符串类型并且不为空,所以为true,所以赋值结果就是c = bb1,所以c也为1

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题