js中switch语句不执行
参考http://www.jb51.net/article/54393.htm
switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式,如果不注意这个细节则写程序时往往会出错。
代码:
|
1
2
3
4
5
6
7
8
|
var n = '5';switch(n){ case 5: alert('执行case分支'); break; default: alert('执行default分支');} |
结果:

可能很多人会误以为以上程序会走case分支,结果却走了default分支。难道它们两个不相等吗?我们使用if语句看看。
代码:
|
1
2
3
4
5
6
|
var n = '5';if(n==5){ alert('真 分支');}else{ alert('假 分支');} |
结果:

在if语句里可以匹配,但为何在switch语句里不能匹配呢?
这是因为在switch语句里的case使用全等模式,也就相当于if里的使用三个等号类似。我们把case的代码改写一下
代码:
|
1
2
3
4
5
6
7
8
|
var n = '5';switch(n){ case '5': // 把原来的 case 5 改写成 case '5' alert('执行case分支'); break; default: alert('执行default分支');} |
结果:

改写了以后就能走case分支了,就像我们if里使用三个全等号一样
代码:
|
1
2
3
4
5
6
|
var n = '5';if(n===5){ alert('真 分支');}else{ alert('假 分支');} |
结果:

因为使用全等,所以字符串5不等于数字5,结果走了假分支。
由以上例子说明在 switch中使用的是全等匹配模式,特别是数字与字符串匹配的时候需要注意的一个问题
最后我将数字改为字符串类型后,程序跑起来了。
//开始加密
var currvalue = $("#select option:selected").val();
switch(currvalue)
{
case '0':
//base64
var b = new Base64();
name = new Base64().encode(name);
//解密
//var str = b.decode(str);
break;
case '1':
//md5 break;
case '2':
//sha1 break;
default:
//des }
alert(name);

js中switch语句不执行的更多相关文章
- JS中switch语句做选择时为什么可以不用break?
在JavaScript中,switch语句相比其他语言并没有特殊之处. 在使用时,我们要注意每个分支后都应加一条break语句,否则后面的分支仍然会执行.实际程序中,我发现有时没用break语句,仍然 ...
- js中退出语句break,continue和return 比较
js中退出语句break,continue和return 比较 在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是 ...
- js中退出语句break,continue和return 比较(转)
原链接:http://blog.163.com/ued_er/blog/static/199703159201210283107315/ js中退出语句break,continue和return 比较 ...
- switch语句的执行过程
switch语句的执行规则如下: 1.从第一个case开始判断,不匹配则跳到下一个case继续判断: 2.遇到break则跳出switch语句: 3.default一般是没有匹配项才执行的,一般是放在 ...
- SQL 中 SELECT 语句的执行顺序
好像自已在书写 SQL 语句时由于不清楚各个关键字的执行顺序, 往往组织的 SQL 语句缺少很好的逻辑, 凭感觉 "拼凑" ( 不好意思, 如果您的 SQL 语句也经常 " ...
- SQLServer2005中查询语句的执行顺序
SQLServer2005中查询语句的执行顺序 --1.from--2.on--3.outer(join)--4.where--5.group by--6.cube|rollup--7.havin ...
- 容易被忽略的事----sql语句中select语句的执行顺序
关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意. 今天在一次面试的时候自己见到了,感觉没一点的印象, ...
- 在 php 7.3 中 switch 语句中使用 continue
在 php 7.3 中 switch 语句中使用 continue 在 php 7.3 的 switch 中使用 continue 会出现警告.1 2 3 while ($foo) { switch ...
- MySQL-SQL语句中SELECT语句的执行顺序
SELECT语句的执行顺序大家比较少关注,下面将为您详细介绍SQL语句中SELECT语句的执行顺序,供您参考,希望对您能够有所帮助. SELECT语句的执行的逻辑查询处理步骤: (8)SELECT ( ...
随机推荐
- Vim常用的功能命令
一.编辑 查看行号 :set nu 删除一整行 dd 删除1到10行 :1,10d 删除所有内容 dG 当前行下插入一空行 o 撤销改动 u 查看当前行信息 ...
- Windows netcat 的工具的简单使用
1. 下载 https://eternallybored.org/misc/netcat/ 2. 将目录添加到环境变量 C:\Work\netcat 3. 简单实验 4. 查看说明 UPDATE // ...
- springBoot 静态变量@value取不到值
在工具类中给静态变量初始化值,使用了springBoot的@Value注解,但是没有赋值成功,得到的是null @Value("${jdbc.url}")private stati ...
- [2019徐州网络赛J题]Random Access Iterator
题目链接 大致题意:从根节点出发,在节点x有son[x]次等概率进入儿子节点,求到达最深深度的概率.son[x]为x节点的儿子节点个数. 又又又又没做出来,心态崩了. 下来看了官方题解后发觉自己大体思 ...
- 微信小程序获得微信头像和昵称
微信小程序之登录态的探索 { wx.getSetting({ success: res => { if (res.authSetting && res.authSetting[' ...
- 在java中读取文件中的内容
package shi; import java.io.*; public class wenjianIO { public static void main(String agrs[]){ File ...
- 【 React -- 2/100 】使用React实现评论功能
React| 组件化 | 递归 | 生成唯一ID 需要探究一下 .find() 和 findIndex() 的区别 import React from 'react' import './commen ...
- Python基础2——数据类型的操作
列表操作 列表.字符串.元组的切片总结: num=[1, 2, 3, 4, 5, 6] 1.切片是通过下面来切,下标可以正数,也可以是复数.注意:复数的话,最后一个值的下标为-1,往前面推导就是-1, ...
- mkswap - 建立一个linux交换区
总览 mkswap [-c] [-vN] [-f] device [size] 描述 mkswap 在一个设备上或者在一个文件里创建一个linux交换区. (该交换区创建后,必须使用 swapon 命 ...
- Linux上进行常用软件的配置
当拿到一个新的linux服务器的时候一般要经过以下5个配置 修改HOSTANME vi /etc/sysconfig/network 修改HOSTNAME和IP的映射 ...