javascript - 两个三元运算符嵌套优先执行嵌套内的吗?

查看:108
本文介绍了javascript - 两个三元运算符嵌套优先执行嵌套内的吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

num = (num < 10) ? ( (num<0)?(num+=24):(num="0"+num) ) : (num)

就是这个,会先进行24小时时区判断,然后再判断是否小于10码?验证后是这样的,但以前没遇到过,特来求解

解决方案

num = (1 < 10) ? ( (1<0)?1:2 ) : 3
2
num = (11 < 10) ? ( (1<0)?1:2 ) : 3
3
num = (1 < 10) ? ( (1<10)?1:2 ) : 3
1

没毛病啊,先算问号左边,(num < 10)
如果为真,则接(num<0)?(num+=24):(num="0"+num)
为假则接(num)

直接打开 console 试试看就知道了,应该是别的地方疏忽了。
突然想到,其实你要说是先算嵌套的,其实结果不会变的,所以无法验证。
因为如果(num < 10)为假,则必然无视嵌套,
如果(num < 10)为真,则运行嵌套的内容,那么得出嵌套内容的结果,无论先后都是一样。

再加上符合你题目要求的类似测试:

num=11
11
num = (num < 10) ? ( (num<100)?(num-=2):(num="0"+num) ) : (num)

11

如果说先执行嵌套内容,则程序就会出现死循环,而不会返回 num 即 11 了。
所以是从左到右的。

这篇关于javascript - 两个三元运算符嵌套优先执行嵌套内的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆