JSLint说+
在Webstorm的提示中变得混乱,但这段代码有效。
var totalheightInInches = +selectedFeetToInches + +this.inchSelect.get("value");
这是一种不好的做法,还是有更好的转换方式,以便JSLint得到满足,因为JSLint基于我们所知的最佳实践?
在人们匆匆忙忙关闭之前,我想知道处理这种转换的一些更好的方法。答案 0 :(得分:2)
您可以使用parseFloat和parseInt函数
parseFloat("2", 10) //returns the Number 2
答案 1 :(得分:1)
我认为+
在这种情况下是首选,因为它显式地将操作数强制转换为Number。它相当于Number(x)
但输入更少。 parseInt
和parseFloat
用于修剪尾随的非数字字符(例如,将5px
转换为5
或5.5cm
转换为5.5
)并推断你想要一个整数或浮点数,+
没有。
我说它输入的次数少了吗? :-)
生产+ 标识符 + + 标识符只能以一种方式解释,它不含糊。
答案 2 :(得分:1)
如果你只是试图使用一个不幸被存储为字符串的数字,那么parseInt()和parseFloat()就像用一颗原子弹杀死一只苍蝇。它们用于更重的工作,例如在执行可选的基本转换时提取字符串的数字部分等.JavaScript是一种动态类型语言,它自动决定数据是数字还是字符串。正如你所知道的那样,“+”是这种动态类型的善良并不总是那么好的情况之一。
如果你有一个数值,不幸的是存储为一个字符串,那么我们可以注意并利用内部的JavaScript(根据ECMA标准),“+”模糊地试图猜测是否添加或串联是有意的,但对于减法总是意味着将所有变量解释为数值数据类型或NaN(就像建议的转换函数作为其工作的一小部分一样)。
所以我没有看到使用parseInt()
减慢代码速度的任何意义,除非我真的想从另一个字符串中解析一个整数来进行基本转换。这就像在每个if语句中使用Boolean()
将每个表达式转换为布尔值。
对于程序的深层内部,我使用减法专门用于添加有时可能存储为字符串的任何变量,并且在每个公式中,根据结果,我只需将结果变量替换为相反的结果变量。结果是零额外代码和最高执行效率,代价是混乱(一旦有人认识到这种做法,混乱就会消失)。
对于更加人性化的代码,虽然仍然比使用任何一种解析函数快得多,但我用一条注释减去0,提到我这样做是为了确保将未指定类型的数据理解为数字。
(实际上,当我确定我的空格不会在以后崩溃时,我也会做+ +变量。这是+ +方法的唯一缺点,因为几乎所有代码都可以在没有空格的情况下编写,但此操作需要空格或括号。)
答案 3 :(得分:0)
喜欢
var totalheightInInches = parseInt(selectedFeetToInches,10) + parseInt(this.inchSelect.get("value"),10);
如果您期望浮点值。如Parthik Gosar建议parseFloat
代替parseInt
最适合。
答案 4 :(得分:0)
添加()消息导致JSLint警告消失。有道理。
var totalheightInInches = (+selectedFeetToInches) + (+this.inchSelect.get("value"));`
答案 5 :(得分:-1)
使用Number()功能......
Number("100"); // returns 100
var totalheightInInches = Number(selectedFeetToInches) + Number(this.inchSelect.get("value"));
另一种将它转换,除以或乘以1 ,,,
的方法var totalheightInInches = selectedFeetToInches/1 + this.inchSelect.get("value")/1;