Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我们应该在switch条件下解析值,而不是在if条件下解析值?_Javascript_Html_Function_If Statement - Fatal编程技术网

Javascript 为什么我们应该在switch条件下解析值,而不是在if条件下解析值?

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: 控制台。日志工作; 打破 违约: 打破 } } 开关盒对值和类型进行严格的

函数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,因为在这种情况下,虽然值相等,但类型不相等

以下工作将起作用:

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
}