1. <small id='sZzky'></small><noframes id='sZzky'>

    2. <tfoot id='sZzky'></tfoot>
        <bdo id='sZzky'></bdo><ul id='sZzky'></ul>

    3. <legend id='sZzky'><style id='sZzky'><dir id='sZzky'><q id='sZzky'></q></dir></style></legend>
      <i id='sZzky'><tr id='sZzky'><dt id='sZzky'><q id='sZzky'><span id='sZzky'><b id='sZzky'><form id='sZzky'><ins id='sZzky'></ins><ul id='sZzky'></ul><sub id='sZzky'></sub></form><legend id='sZzky'></legend><bdo id='sZzky'><pre id='sZzky'><center id='sZzky'></center></pre></bdo></b><th id='sZzky'></th></span></q></dt></tr></i><div id='sZzky'><tfoot id='sZzky'></tfoot><dl id='sZzky'><fieldset id='sZzky'></fieldset></dl></div>

      Javascript 中字符串的 Switch-Case 未按预期工作

      时间:2023-09-07
      <i id='p8YeI'><tr id='p8YeI'><dt id='p8YeI'><q id='p8YeI'><span id='p8YeI'><b id='p8YeI'><form id='p8YeI'><ins id='p8YeI'></ins><ul id='p8YeI'></ul><sub id='p8YeI'></sub></form><legend id='p8YeI'></legend><bdo id='p8YeI'><pre id='p8YeI'><center id='p8YeI'></center></pre></bdo></b><th id='p8YeI'></th></span></q></dt></tr></i><div id='p8YeI'><tfoot id='p8YeI'></tfoot><dl id='p8YeI'><fieldset id='p8YeI'></fieldset></dl></div>

        <tfoot id='p8YeI'></tfoot>

        <small id='p8YeI'></small><noframes id='p8YeI'>

        <legend id='p8YeI'><style id='p8YeI'><dir id='p8YeI'><q id='p8YeI'></q></dir></style></legend>

                <tbody id='p8YeI'></tbody>
              • <bdo id='p8YeI'></bdo><ul id='p8YeI'></ul>
                本文介绍了Javascript 中字符串的 Switch-Case 未按预期工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                所以我在字符串和 switch-case 方面遇到了这个问题,我会尽量保持简单.

                So I have this problem with strings and switch-case, and I'll try to keep it as simple as possible.

                这里 event.keyCode 的值为65",是a"的 keydown 事件的结果(使用 JQuery).

                Here event.keyCode has the value "65", and is the result of a keydown event of 'a' (using JQuery).

                if (event.keyCode == "65") {
                   alert("hmmmm");
                }
                

                这行得通,但是:

                switch (event.keyCode) {
                   case '65':
                      alert("Yay!");
                      break;
                }
                

                那不是.但是,这将起作用:

                That doesn't. However this will work:

                switch ('65') {
                   case '65':
                      alert("Yay!");
                      break;
                }
                

                如果我这样做:

                var t = '65';
                switch (t) {
                   case '65':
                      alert("Yay!");
                      break;
                }
                

                它有效.然后我尝试了这个:

                It works. And then I tried this:

                var t = event.keyCode;
                switch (t) {
                   case '65':
                      alert("Yay!");
                      break;
                }
                

                但它失败了!

                那么为什么它在开头的 if-block 中匹配,但在 switch-case 中却不匹配?

                So why does it match in the if-block at the beginning, but not for the switch-case?

                推荐答案

                keyCode 是整数,而不是字符串.当您使用 == 时,转换是隐式完成的.但是,该开关使用 === 的等效项,它不允许隐式转换.您可以通过以下方式轻松测试:

                keyCode is an integer, not a string. When you use ==, the conversion is done implicitly. However, the switch uses the equivalent of ===, which doesn't allow implicit conversions. You can test this easily with:

                switch (65) {
                   case '65':
                      alert("Yay!");
                      break;
                }
                

                正如预期的那样,它不会发出警报.

                As expected, it does not alert.

                这在 ECMAScript 中有说明,第 5 版第 12.11 节(switch 语句).如果input 等于 === 运算符定义的 clauseSelector",解释器将输入 case 语句.在我上面的示例中,input 是 65(整数),而 ClauseSelector 是 '65'(字符串),它们不是 ===.

                This is stated in ECMAScript, 5th edition section 12.11 (switch statement). The interpreter will enter a case statement if "input is equal to clauseSelector as defined by the === operator". input is 65 (integer) and clauseSelector is '65' (string) in my above example, which are not ===.

                这篇关于Javascript 中字符串的 Switch-Case 未按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:“开关"的替代方案陈述 下一篇:JavaScript 开关奇怪的行为

                相关文章

                  <legend id='22SYd'><style id='22SYd'><dir id='22SYd'><q id='22SYd'></q></dir></style></legend>

                1. <small id='22SYd'></small><noframes id='22SYd'>

                    <bdo id='22SYd'></bdo><ul id='22SYd'></ul>
                  <i id='22SYd'><tr id='22SYd'><dt id='22SYd'><q id='22SYd'><span id='22SYd'><b id='22SYd'><form id='22SYd'><ins id='22SYd'></ins><ul id='22SYd'></ul><sub id='22SYd'></sub></form><legend id='22SYd'></legend><bdo id='22SYd'><pre id='22SYd'><center id='22SYd'></center></pre></bdo></b><th id='22SYd'></th></span></q></dt></tr></i><div id='22SYd'><tfoot id='22SYd'></tfoot><dl id='22SYd'><fieldset id='22SYd'></fieldset></dl></div>

                    <tfoot id='22SYd'></tfoot>