if和switch-case

本文探讨了JavaScript中使用switch-case语句处理字符串时遇到的问题。详细解释了为什么当比较整数与字符串时,if语句可以进行隐式类型转换而switch-case则不可以。

我有个关于String和switch-caseS问题,尽量将这个问题简单描述出来。

event.keyCode的值为65,对应字符为 'a' (using JQuery)。

if(event.keyCode =="65"){
   alert("hmmmm");}

上面这个例子能正常工作,而下面:

switch(event.keyCode){case'65':
      alert("Yay!");break;}

这个不行,虽然能够正常工作

switch('65'){case'65':
      alert("Yay!");break;}

同样以下例子:

var t ='65';switch(t){case'65':
      alert("Yay!");break;}

也尝试下面这个代码:

var t =event.keyCode;switch(t){case'65':
      alert("Yay!");break;}

但是还是失败了

搞不懂在if-block中运行正常,而在switch-case却不能符合要求。

原因:

keyCode是integer, 而不是string。 但你使用 ==, 这个装换过程是隐式。  虽然, switch 等价于 ===, 不允许隐式转换。 

测试如下:

switch(65){case'65':
      alert("Yay!");break;}

正如预期的那样,它没有警报。

引用:http://stackoverflow.com/questions/2573145/switch-case-for-strings-in-javascript-not-working-as-expected

 

                         

转载于:https://www.cnblogs.com/caibin/archive/2013/03/21/2974321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值