当前位置: 首页 > 编程笔记 >

JavaScript中switch判断容易犯错的一个细节

松俊才
2023-03-14
本文向大家介绍JavaScript中switch判断容易犯错的一个细节,包括了JavaScript中switch判断容易犯错的一个细节的使用技巧和注意事项,需要的朋友参考一下

switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式,如果不注意这个细节则写程序时往往会出错。

代码:

var n = '5';
switch(n){
    case 5:
        alert('执行case分支');
        break;
    default:
        alert('执行default分支');
}

结果:

可能很多人会误以为以上程序会走case分支,结果却走了default分支。难道它们两个不相等吗?我们使用if语句看看。

代码:

var n = '5';
if(n==5){
    alert('真 分支');
}else{
    alert('假 分支');
}

结果:

在if语句里可以匹配,但为何在switch语句里不能匹配呢?

这是因为在switch语句里的case使用全等模式,也就相当于if里的使用三个等号类似。我们把case的代码改写一下

代码:

var n = '5';
switch(n){
    case '5': // 把原来的 case 5 改写成 case '5'
        alert('执行case分支');
        break;
    default:
        alert('执行default分支');
}

结果:

改写了以后就能走case分支了,就像我们if里使用三个全等号一样

代码:

var n = '5';
if(n===5){
    alert('真 分支');
}else{
    alert('假 分支');
}

结果:

因为使用全等,所以字符串5不等于数字5,结果走了假分支。

由以上例子说明在 switch中使用的是全等匹配模式,特别是数字与字符串匹配的时候需要注意的一个问题

 类似资料:
  • 万事开头难, Java 编程的初学者常常会遇到各种各样的问题。对于自学的读者来说,则是需要花费更多的时间、精力来解决这些问题,而且一旦遇到的问题几天都得不到解决,往往会带来很大的挫败感。 所以本节介绍一些初学者经常出现的错误,以便减少读者在学习中的障碍。 1)大小写问题 之前我们已经提到,Java 是区分大小写的语言。但由于大部分读者都是 Windows 操作系统的忠实拥护者,因此对大小问题往往都

  • 本文向大家介绍JavaScript中如何判断一个值的类型,包括了JavaScript中如何判断一个值的类型的使用技巧和注意事项,需要的朋友参考一下 我们知道在js中有一个运算符可以帮助我们判断一个值的类型,它就是typeof运算符。 我们从以上结果可以看出typeof的不足之处,它对于数值、字符串、布尔值分别返回number、string、boolean,函数返回function,undefine

  • # 11.4 类型判断:type-switch 接口变量的类型也可以使用一种特殊形式的 switch 来检测:type-switch (下面是示例 11.4 的第二部分): switch t := areaIntf.(type) { case *Square: fmt.Printf("Type Square %T with value %v\n", t, t) case *Circle:

  • 本文向大家介绍一个容易犯错的js手机号码验证正则表达式(推荐),包括了一个容易犯错的js手机号码验证正则表达式(推荐)的使用技巧和注意事项,需要的朋友参考一下 写一个简单的正则表达式,用来校验11位手机号码,开头允许是13、15、18,我一开始这样写: 运行发现,即使是 13988888877157777,也能通过验证,这说明这个写法错了,我的本意是希望这样: 所以正确写法是:var reg =

  • 本文向大家介绍如何判断一个数组?相关面试题,主要包含被问及如何判断一个数组?时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍javascript中判断json的方法总结,包括了javascript中判断json的方法总结的使用技巧和注意事项,需要的朋友参考一下 简单地说, JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串(伪对象) ,然后就可以在函数之间轻松地传递这个字符串,或者 在异步应用程序中将字符串从 Web 客户端传递给服务器端程序 。这个字符串看起来有点儿古怪(稍后会看到