javascript - Switch 语句不返回值

标签 javascript switch-statement

我第一次使用 switch 时,我在返回任何东西时遇到了一些问题。作为测试,我采用了一个字符串,并根据测试的字符,控制台记录了一些字符串输出。

function pairElement(str) {
switch (str) {
    case "A":
    console.log("some things")
    break;
    case "G":
    console.log("some more things")
    break;
}
}
pairElement("ACG"); 

这些案例属于相同的值类型,所以我不确定我在这里做错了什么。任何帮助将非常感激。

最佳答案

根据您在 switch 语句中处理的值,您的测试无效。您只处理 AG 的情况,但您通过了 ACG。如果指定的任何案例不匹配,Switch 将无法执行,因为您也缺少默认案例。如果满足以下条件,您的测试将是有效的:

function pairElement(str) {
switch (str) {
    case "A":
    console.log("some things")
    break;
    case "G":
    console.log("some more things")
    break;
}
}
pairElement("A"); // some things - valid
pairElement("G"); // some more things - valid
pairElement("ACG"); // switch case and no default - NOT valid

添加默认值会给你:

function pairElement(str) {
switch (str) {
    case "A":
    console.log("some things")
    break;
    case "G":
    console.log("some more things")
    break;
    default:
    console.log("something ELSE")
}
}
pairElement("A"); // some things  - valid
pairElement("G"); // some more things - valid
pairElement("ACG"); // something ELSE - valid

现在还有一个问题,当您测试多字符串与单个字符串时,您究竟期望什么。在您的 switch 类型中处理单个字符会让您无法预期传递给您的函数的字符串会被 tested char by char,如果是这样,您需要说明这一点,因为这会改变问题/要求。

更新你想要一个字符一个字符的场景:

function pairElement(str) {
	str.split('').forEach(function(v) {
		switch (v) {
			case "A":		
			console.log("some things")
			break;
			case "G":
			console.log("some more things")
			break;
			default:
			console.log("something ELSE")
		}
	}
)
}
pairElement("ACG"); 
// some things
// something ELSE
// some more things

关于javascript - Switch 语句不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51575140/

相关文章:

Android 用 Emoji Fragment 替换键盘

javascript - 未初始化的变量内存分配

javascript - ember.js:指定 Controller 内的组件

javascript - 将数组中的数据连接到对象以通过中间人转换其值

Java比较值,最好的方法

c# - 在 Enum C# 中使用 Switch 语句

带有输入文本的 Javascript switch 语句

javascript - 简单的 ng-repeat 不起作用

javascript - react native 预期字符串但得到对象

java - 切换一组输入的大小写?