由一个网站注册验证码带来的思考
下面给出一个网站的验证码提示
<script type="text/javascript">
// javascript
function show(a) {
alert(2 < a < 3);
}
show(1);
</script>
// javascript
function show(a) {
alert(2 < a < 3);
}
show(1);
</script>
就是这样简单的一段代码,学过java、c#的高手门肯定猛然间认为"这不可能,语法通不过"
我当时也是这么认为
之后我想不填点东西注册过不去,没办法简单的做了下分析第一感觉如果可以跑起来那应该是 false
结果注册不成功!
我不辞劳苦打开editplus 粘上代码运行下
居然是 true 不可思议!
百思不得其解,打开QQ问下大牛们,得到解释
若类型 false 会自动转为 0
如果是 那就是 2<1 → false
false 转 0
0<3 → true
ps: alert 相当于 那个 consle.write() 对字符串会有一个重载处理工程
常常一会写弱类型(JavaScript),一会写强类型(java,c#),未免犯迷糊.....
那大家测试下下面的代码吧:
0.alert(Number(false));
1. alert(-1< a < -2)
2.alert(8-true)
3.alert(true+false)
1. alert(-1< a < -2)
2.alert(8-true)
3.alert(true+false)
运行完我相信你肯定懂了.....