Javascript 为什么我们应该在switch条件下解析值,而不是在if条件下解析值?
函数runif{ 设a=document.getElementById'test'。值; 如果a==1{ 控制台、日志; } } 功能运行开关{ 设a=document.getElementById'test'。值; 开关a{ 案例1: 控制台。日志工作; 打破 违约: 打破 } } 函数runswitchOne{ 设a=parseIntdocument.getElementById'test'。值; 开关a{ 案例1: 控制台。日志工作; 打破 违约: 打破 } } 开关盒对值和类型进行严格的比较检查 元素的值的类型为string。内部开关盒值的类型为int,不匹配。因此,如果不进行转换,代码将无法工作 但是当使用a==1时,只检查值,而不检查类型,并且1==1的计算结果为true。如果进行严格比较,例如,==,则1==1的计算结果为false,因为在这种情况下,虽然值相等,但类型不相等 以下工作将起作用:Javascript 为什么我们应该在switch条件下解析值,而不是在if条件下解析值?,javascript,html,function,if-statement,Javascript,Html,Function,If Statement,函数runif{ 设a=document.getElementById'test'。值; 如果a==1{ 控制台、日志; } } 功能运行开关{ 设a=document.getElementById'test'。值; 开关a{ 案例1: 控制台。日志工作; 打破 违约: 打破 } } 函数runswitchOne{ 设a=parseIntdocument.getElementById'test'。值; 开关a{ 案例1: 控制台。日志工作; 打破 违约: 打破 } } 开关盒对值和类型进行严格的
switch (a) {
case "1":
.....
无需解析即可使其工作,只需将开关1中的预期值更改为字符串1:
当然,在使用==时的if语句中,这会为您1==1进行类型转换。在开关中,它的行为类似于a===相等运算符,不执行类型强制。=是赋值,而不是比较,您的ifa=1实际上不测试任何内容,它将始终得到满足可能是相等检查a==b的重复,如果a和b的类型不同,则为您进行类型强制转换。身份检查a==b也会比较类型,并且仅当值和类型匹配时才返回true。如果一个==1比较字符串,如果一个==1抛出错误,则???即使将1视为1,也让它返回true;它会像1==1->它会是什么样比较?所以你是说在我使用==时的if语句中,这会进行类型转换。。,是的,我试过了,没人试过,我想这只是比较TQM!没问题@JacksonJegatheesan。使用===也很有用,因为当您以错误的方式使用不同的类型时,您可以学习
switch (a) {
case "1":
//Rest of code
}