迷新白的博客 迷新白的博客
首页
随笔
  • Vuepress
  • Springboot
  • 开发工具
  • 系统工具
读吧
  • 智能浇花系统 (opens new window)
  • 用户中心系统 (opens new window)
  • 关于
  • 友情链接
GitHub (opens new window)

迷新白

愿你平安
首页
随笔
  • Vuepress
  • Springboot
  • 开发工具
  • 系统工具
读吧
  • 智能浇花系统 (opens new window)
  • 用户中心系统 (opens new window)
  • 关于
  • 友情链接
GitHub (opens new window)
  • Vuepress

  • 前端基础

  • Vue

  • CSS

  • JavaScript

    • JavaScript计时器
    • JavaScript文档流
    • JavaScript快速调用函数IIFE
    • JavaScript鼠标事件
    • Java数组问题:Array constants can only be used in initializers
    • JavaScript的switch语句
  • 前端
  • JavaScript
迷新白
2025-08-06

JavaScript的switch语句

在二级页面修改了后台数据之后,需要把前端数据也进行一次更新

这个时候遇到了错误,switch语句在不修改前是没问题的,修改后switch语句仿佛是被跳过了

		let typeName:any;
		switch (items[0].adjType) {
			case 1:
				typeName="从父目录继承附注调整";
				break;
			case 2:
				typeName="纯定额附注调整";
				break;
		}
1
2
3
4
5
6
7
8
9

一开始以为是switch语句没有执行完成就去执行了后续的语句,最终不是

		let typeName:any;
		console.log("1. 开始执行switch"); // 顺序标记1
		switch (items[0].adjType) {
			case 1:
				typeName="从父目录继承附注调整";
				console.log("2. switch分支1执行完毕"); // 顺序标记2
				break;
			case 2:
				typeName="纯定额附注调整";
				console.log("2. switch分支2执行完毕"); // 顺序标记2
				break;
            default :
                console.log("2.标记"+items[0].adjType)
		}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

加了顺序标记后,发现标记2 没有实现,再增加了一个default后标记被执行

输出的是2,但为什么没有进入case语句呢

使用类型检查后

typeof items[0].adjType
1

发现了原因是items[0].adjType经过修改后返回的是string类型

JavaScript 的switch语句使用严格相等(===) 进行判断,即值和类型必须完全一致。

使用Number对象进行包装即可

items[0].adjType = Number(items[0].adjType); 
1
更新时间: 2025/8/10 23:19:43
Java数组问题:Array constants can only be used in initializers

← Java数组问题:Array constants can only be used in initializers

最近更新
01
JavaScript计时器
08-09
02
CSS-动画效果
08-09
03
JavaScript文档流
08-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 迷新白 | 的博客
sitemap icon by Icons8
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式