三目运算符的底层原理及处理问题

欢迎各位朋友的到来(最后一条,求底层原理)~

码农们,晚上好!今天在学习JavaScript过程中,对于三目运算符突发灵感,便对其原理由浅入深的解析。若有错误地方,请指示!

三目运算符的格式

	a>b?a:b
	alert("你好">1?2:3);  //false

通常我们对三目运算符的理解仅把a、b当做数字来判断。是否考虑过将a或b换成字符串形式来比较。在js执行过程中,将 “你好”>1 返回false,条件为假则取第二个值。底层解析无法将一个字符串跟number类型进行比较,只返回false。

不走寻常路的三目运算

alert(true+3>1 ? 1 : 2);  // 1
alert("true"+3>1 ? 1 : 2);  //2

为何同样的式子,却出现不一样的结果。因为这涉及到拼接的问题,字符串类型跟数字类型拼接,js将其解析合并为:true(String),string跟number比较,返回false,所以第二个式子结果为2。

使用三目运算求出三个数的最大值,及其拼接的问题

var a=parseInt(window.prompt());
var b=parseInt(window.prompt());
var c=parseInt(window.prompt());
alert( (a>b?a:b) > c ? (a>b?a:b) : c );  

思路:首先先求出a与b的较大值,取出较大值后,再跟c进行比较。(a>b?a:b)取出较大值,并将这个式子当做一个值与c进行比较,从而求出最大值。

三目运算求最大值得拼接问题

alert( "三个数的最大值为:" + ((a>b?a:b) > c ? (a>b?a:b) : c) );  

如果对三目运算符得出结果进行拼接输出,想要正确输出时,则需对整个式子最外层套上一层括号。

三目运算求最大值得拼接,式子最外层不加括号问题

alert( "三个数的最大值为:" + (a>b?a:b) > c ? (a>b?a:b) : c );  

当式子的最外层不嵌套括号时,底层的js会将拼接字符串也加进来计算;所得到的结果不一定是最大值,经过我的多次试验,该式子输出的结果是:得到a与b之中的最大值(exp1:输入顺序为:1、2、3;输出为:2。exp2:输入顺序为:1、3、2;输出为:3…)。那么该得出的结果,该底层的执行顺序是怎么样的?求各位路过的大佬知识。向大佬看齐~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运算符又称为三元运算符和条件运算符,在多种编程语言中都有使用。它的作用是进行条件判断,可以理解为if条件判断的简化版。\[1\]一元运算符只需要一个数据进行操作,例如取反、自增、自减;二元运算符需要两个数据进行操作,例如加法、减法、乘法等等;而三元运算符则需要三个数据进行操作。\[2\]在JavaScript中,三运算符的基本格式是:条件表达式 ? 表达式1 : 表达式2,其中条件表达式为真时返回表达式1,否则返回表达式2。\[3\]在Python中也有类似的三运算符,但语法略有不同。 #### 引用[.reference_title] - *1* *3* [什么是三运算符?三运算符怎么使用?](https://blog.csdn.net/zy1992As/article/details/127884410)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JAVA 系列——>三元运算符(三运算符)](https://blog.csdn.net/qq_16397653/article/details/103601970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值