我在事件处理程序中有这行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语句中使用字符串?
简单使用+value,注意+变量前面的变量,将变量转换为数字
switch (+value) {
case 9:
return 12;
case 12:
return 9;
}
Run Code Online (Sandbox Code Playgroud)
或者有没有办法将值作为int获取,就像用jQuery()说的那样?
当然,这几乎总是在语言或环境中提供的功能.在JavaScript中,有四种方式:
parseInt将字符串解析为整数.value = parseInt(value, 10)将它解析为十进制(例如,基数10,我们大多数人使用的数字系统).请注意,parseInt它将解析它在字符串开头找到的数字,忽略它之后的任何内容.所以parseInt("1blah", 10)是1.
parseFloat1.2如果字符串包含小数点,则会将字符串解析为可能小数(如).它总是在10号基地工作.
该Number功能:value = Number(value).这要求整个字符串都是一个数字,并通过查看字符串来确定它的基数:默认值是十进制,但如果以它开头,0x它被解析为十六进制(基数为16),并且在某些引擎上处于松散模式如果以它开头,0则将其解析为八进制(基数为8).没有办法强迫它使用特定的数字基数.
强制引擎通过应用数学运算符来隐式转换它; 通常的一个是+.所以: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)