why should we parse value in switch condition but not in if condition?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | function runif() { let a = document.getElementById('test').value; if (a == 1) { console.log("works"); } } function runswitch() { let a = document.getElementById('test').value; switch (a) { case 1: console.log("working"); break; default: break; } } function runswitchOne() { let a = parseInt(document.getElementById('test').value); switch (a) { case 1: console.log("working"); break; default: break; } } |
1 2 3 4 5 6 | <form action=""> <input type="text" id="test"> <input type="button" onclick="runif()" value="click to check if"> <input type="button" onclick="runswitch()" value="click to check without parseInt"> <input type="button" onclick="runswitchOne()" value="click to check with parseInt"> </form> |
这是我用一个文本输入和两个按钮创建的表单。
其中if语句识别输入并执行操作
但在转换过程中,我必须让它解析以识别
我不明白它为什么会起作用?我知道文本输入给出了sting,但如果是,那么if()语句在不解析的情况下如何工作?
通常我们使用if(a=="1")来比较字符串,而不是if(a==1)?
但即便如此,它仍然有效
您可以让它在不进行解析的情况下工作,只需将您在
1 2 3 4 | switch (a) { case"1": //Rest of code } |
当然,在使用
The switch case does the strict comparison (check both value and type).
元素的值属于字符串类型。switch case值的类型为int,不匹配。因此,如果不进行转换,代码就无法工作。
但当使用
以下内容有效:
1 2 3 | switch (a) { case"1": ..... |