Javascript switch语句-字符串vs int
我在事件处理程序中有这行javascript:Javascript switch语句-字符串vs int,javascript,jquery,Javascript,Jquery,我在事件处理程序中有这行javascript: var value = event.currentTarget.value; //example: 9 然后我在switch语句中使用它 switch (value) { case 9: return 12; case 12: return 9; } 问题是“value”是字符串而不是int 我应该把它转换成int吗 或者有没有一种方法可以像jQuery()那样获取int值 还是应该在swit
var value = event.currentTarget.value; //example: 9
然后我在switch语句中使用它
switch (value) {
case 9:
return 12;
case 12:
return 9;
}
问题是“value”是字符串而不是int
我应该把它转换成int吗
或者有没有一种方法可以像jQuery()那样获取int值
还是应该在switch语句中使用字符串?简单使用
+value
,注意变量前面的+
,将变量转换为数字
switch (+value) {
case 9:
return 12;
case 12:
return 9;
}
试试这个
parseInt()
函数解析字符串并返回整数
var value = parseInt(event.currentTarget.value, 10);
或者有没有一种方法可以像jQuery()那样获取int值
当然,这几乎总是语言或环境中提供的特性。在JavaScript中,有四种方式:
parseInt
将字符串解析为整数value=parseInt(value,10)
将其解析为十进制(例如,基数10,我们大多数人使用的数字系统)。请注意,parseInt
将解析它在字符串开头找到的数字,忽略其后的任何内容。因此parseInt(“1blah”,10)
是1
parseFloat
将字符串解析为可能的小数(如1.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
实时复制:
console.log(parseInt(“15”,10));//15
console.log(parseFloat(“15”);//15
console.log(编号(“15”);//15
console.log(+“15”);//15
console.log(parseInt(“1.4”,10));//1.
console.log(parseFloat(“1.4”);//1.4
console.log(编号(“1.4”);//1.4
console.log(+“1.4”);//1.4
log(parseInt(“10件漂亮的东西”,10));//10
log(parseFloat(“10件漂亮的东西”);//10
console.log(数字(“10件漂亮的东西”);//楠
console.log(+“10件漂亮的东西”);//NaN
。作为控制台包装器{
最大高度:100%!重要;
}
Good point:9==“9”
//falseForm值始终返回字符串。value=0 | value
如果不是按数字,则速度可能更快,至少是按+
的速度。我错了吗?@GrijeshChauhan:我怀疑它会更快(这可能无关紧要)。它也只适用于整数,因为按位运算符通过整数转换获取数字。编辑:我很好奇,找到了与+测试的数字,所以我添加了你的:通常情况下,一些测试速度较慢,其他测试速度较快(这让我很惊讶)。@GrijeshChauhan:如果是最终用户输入,使用带基数的parseInt
通常是最好的方法。你的意思是因为+
不会在错误输入时引发异常,但parseInt会引发异常,我只是读了@GrijeshChauhan:parseInt
不会引发异常。不,我的意思是因为用户做的事情像输入010
之类,他们的意思是10,而不是8,但有些引擎将010
视为八进制。因此给出了基数。