Javascript 方法vs基本JS?我应该使用toString吗?帕西恩?jQuery?

Javascript 方法vs基本JS?我应该使用toString吗?帕西恩?jQuery?,javascript,jquery,string,Javascript,Jquery,String,自从我找到toString()函数以来,我一直在想这个问题,但从来没有费心问过。我应该使用基本JS还是做同样事情的函数 现在,不要误会我的意思,我意识到toString有它的补救性质,比如将函数转换为字符串 var message = function() { // multi // line // string }.toString(); 但请承认:我们主要使用toString将数字转换为字符串。我们就不能这样做吗 var myNumber = 1234; var message = ''+

自从我找到toString()函数以来,我一直在想这个问题,但从来没有费心问过。我应该使用基本JS还是做同样事情的函数

现在,不要误会我的意思,我意识到toString有它的补救性质,比如将函数转换为字符串

var message = function() {
// multi
// line
// string
}.toString();
但请承认:我们主要使用toString将数字转换为字符串。我们就不能这样做吗

var myNumber = 1234;
var message = ''+myNumber;
这不仅更短,而且根据JSPerf,toString方法要慢97%!(证明:)正如我所说,我知道toString很有用,但当人们对Javascript变量的类型提出疑问时,toString()通常会出现。这就是基本的Javascript。每个浏览器都可以使用引号

parseInt也是如此。现在,在我发现parseInt之前,我发现将一个字符串乘以一可以将其转换为一个数字。这是因为不能自然地将字符串相乘,迫使Javascript将其视为数字

var message = "4321";
var myNumber = message*1;
现在,有趣的是,这比parseInt慢,但不会太多。我还注意到一个空字符串或一个没有数字的字符串将返回0,而parseInt将返回NaN,因为字符串中没有数字。再一次,我意识到parseInt更快,可以转换为不同的基。但是,乘法更短,可以在任何浏览器中使用,记住,parseInt只返回整数。那么,为什么它总是作为问题的答案出现,询问如何转换为数字/什么是NaN

现在这可能有点离题了,但实际上我想知道jQuery也有类似的事情。再一次,jQuery是我从未真正理解过它的用途的东西。Javascript代码是干净的,jQuery本身就是一个JS文件,所以它不能做任何Javascript不能做的事情。它可能会简化某些函数和内容,但为什么不将这些函数复制到您的页面上,而忽略您不使用的其余函数呢?仅仅为了完成一个简单的任务而包含jQuery似乎有些过分。在这里,动画也不能被原谅——因为这也可以通过本机Javascript实现。那么为什么是jQuery呢

最终我要问的是,既然有更好的方法,为什么我们需要这些东西来达到这些目的?还是更好的方法?一般来说,使用函数是更好的练习吗

这不仅更短,而且根据JSPerf,toString方法要慢97%

除非每秒调用数亿个数字的
.toString()
,并且通过分析发现这是应用程序中的瓶颈,否则这根本不应该是一个因素

但请承认:我们主要使用toString将数字转换为字符串

正如您所看到的,这可以通过将字符串和数字相加来隐式实现,因此我看不到使用
''+n
代替
n.toString()
的任何好处。如果不使用字符串连接
n
,则后者更具可读性

var message = function() {
// multi
// line
// string
}.toString();
但是,乘法更短,可以在任何浏览器中使用,记住,parseInt只返回整数

你是说不是每个浏览器都能使用
parseInt
?如果要将某个内容解析为整数,请使用
parseInt
。如果您想将某些内容解析为浮点值(JavaScript实际上对这两种类型都没有特殊的类型,所有数字都是浮点值),请使用
parseFloat

更常见的模式是使用
+'123'
,其行为与
1*'123'
完全相同
parseInt
正确地处理空字符串,但不管出于什么原因,它都不会像您期望的那样验证字符串。一元加号在出现错误时返回
NaN
,但不正确地处理空白和空字符串。这是JavaScript的缺点之一,因此如果您使用的是Base10,那么在两者之间确实没有具体的选择

那么,为什么它总是作为问题的答案出现,询问如何转换为数字/什么是NaN

因为规范中包含了这些函数来将字符串转换为数字,并且像您这样使用二进制运算符将字符串转换为数字是一种副作用,而不是主要目的。您还可以使用
parseInt
解析不同基中的整数,这在类型强制中是不可能的

它可能会简化某些函数和内容,但为什么不将这些函数复制到您的页面上,而忽略您不使用的其余函数呢

如果您从CDN加载jQuery,那么很有可能用户的浏览器已经下载并缓存了它,使得下载时间和膨胀几乎不存在。如果你做一个“定制构建”,我敢打赌它会让网站在第一次加载时变慢

在这里,动画也不能被原谅——因为这也可以通过本机Javascript实现


一切都可以。没有必要在每次编写内容时都重新设计轮子。

toString()
可以接收一个参数来设置数字格式的基础<代码>123..toString(2);“1111011”,和
parseInt
也可以让您设置解析
parseInt(“1111011”,2);//123
parseInt
还返回一个整数,而如果字符串的格式是这样的,则乘法将返回一个浮点。此外,乘法将把
“0x123”
语法解释为十六进制。所以有区别。但是如果你问的是这样的事情不适用的情况,那么这是一个意见和偏好的问题……jQuery写道,这也是一个意见和偏好的问题。我避免使用它,而其他人甚至在最小的情况下也希望使用它。归根结底,这里不是讨论这个问题的地方。同样值得一提的是jQuery,每个库的要点是您不必自己编写相同的功能。如果你不这样做,这可能会变得更加明显