关于js隐式转换的问题?
烟雨江南
烟雨江南 2017-03-18 09:15:30
0
2
867

一个简单的求最大值的问题

关于隐式转换的问题

这是未显示转换时的判断
    var n1=prompt("请输入第一个数");
    var n2=prompt("请输入第二个数");
    var n3=prompt("请输入第三个数");
    n1>n2 ? (n1>n3 ? alert("最大值是:"+n1) : alert("最大值是:"+n3))
    :(n2>n3?alert("最大值是:"+n2):alert("最大值是:"+n3));

值较小的时候最大值的判断是没问题的, 但是出现比如 124 127 9 时 判断的最大值为9.

这是解决之后的代码

 var n1=parseInt(prompt("请输入第一个数"));
    var n2=parseInt(prompt("请输入第一个数"));
    var n3=parseInt(prompt("请输入第一个数"));
    n1>n2 ? (n1>n3 ? alert("最大值是:"+n1) : alert("最大值是:"+n3))
    :(n2>n3?alert("最大值是:"+n2):alert("最大值是:"+n3));
烟雨江南
烟雨江南

全部回复(2)
数据分析师

关于js隐式转换的问题?-PHP中文网问答-关于js隐式转换的问题?-PHP中文网问答

围观一下哦,学习一下。

迷茫

prompt 返回的是一个字符串。这一点,楼上的说清楚了。然后关于字符串之间的比较,我简单说下我的认知。

关于楼上说的 示例中没有什么隐式转换这句话我是不太认同的。

因为字符串直接进行的大小比较,它的本质上是将字符串进行转化为ASCII字符编码后进行大小的比较,所以这里是有隐式转换的。

下面简单写点例子证明一下,楼主就清楚了。

'a'<'A' false 小写的a的编码是97,大写A的编码是65 所以这里实质上是97<65 false

'124'>'9' true 这里会涉及到一个比较时的行为,简单来讲,对字符串进行比较时,都是由第一个
字符先进行比较的,如果得出大小,那么直接返回结果比如这里的'124'中的1小于9所以直接得出了true,
但是,如果第一项没有得到结果(相同,相等),那么就比较第二项,依次类推,直到得出结果。
例如:
'12'>'113' true 这里第一项相等于是比较第二项也就是2>1所以true
'123'>'1211' true 比较第三项3>1


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板