switch语句 - 字符串vs int

Gre*_*Gum 4 javascript jquery

我在事件处理程序中有这行javascript:

var value =  event.currentTarget.value; //example: 9
Run Code Online (Sandbox Code Playgroud)

然后我在switch语句中使用它.

switch (value) {

    case 9:
        return 12;
    case 12:
        return 9;
}
Run Code Online (Sandbox Code Playgroud)

问题是"value"是一个字符串而不是int.

我应该把它转换为int吗?

或者有没有办法将值作为int获取,就像用jQuery()说的那样?

或者我应该在switch语句中使用字符串?

Sat*_*pal 9

简单使用+value,注意+变量前面的变量,将变量转换为数字

switch (+value) {
    case 9:
        return 12;
    case 12:
        return 9;
}
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 8

或者有没有办法将值作为int获取,就像用jQuery()说的那样?

当然,这几乎总是在语言或环境中提供的功能.在JavaScript中,有四种方式:

  1. parseInt将字符串解析为整数.value = parseInt(value, 10)将它解析为十进制(例如,基数10,我们大多数人使用的数字系统).请注意,parseInt它将解析它在字符串开头找到的数字,忽略它之后的任何内容.所以parseInt("1blah", 10)1.

  2. parseFloat1.2如果字符串包含小数点,则会将字符串解析为可能小数(如).它总是在10号基地工作.

  3. Number功能:value = Number(value).这要求整个字符串都是一个数字,并通过查看字符串来确定它的基数:默认值是十进制,但如果以它开头,0x它被解析为十六进制(基数为16),并且在某些引擎上处于松散模式如果以它开头,0则将其解析为八进制(基数为8).没有办法强迫它使用特定的数字基数.

  4. 强制引擎通过应用数学运算符来隐式转换它; 通常的一个是+.所以:value = +value.这也是一样的value = Number(value).奇怪的是,它往往比Number某些引擎慢,但不够重要.

示例:实时复制

parseInt("15", 10):  15
parseFloat("15"):    15
Number("15"):        15
+"15":               15

parseInt("1.4", 10): 1
parseFloat("1.4"):   1.4
Number("1.4"):       1.4
+"1.4":              1.4

parseInt("10 nifty things", 10): 10
parseFloat("10 nifty things"):   10
Number("10 nifty things"):       NaN
+"10 nifty things":              NaN
Run Code Online (Sandbox Code Playgroud)