- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自从我找到 toString() 函数以来,这是我一直想知道的问题,但从来没有费心去问。我应该使用基本的 JS 还是做同样事情的函数?
现在,请不要误会我的意思,我意识到 toString 有其可取之处,例如将函数转换为字符串。
var message = function() {
// multi
// line
// string
}.toString();
但承认这一点:我们主要使用 toString 将数字转换为字符串。我们不能这样做吗?
var myNumber = 1234;
var message = ''+myNumber;
这不仅更短,而且根据 JSPerf 的说法,toString 方法要慢 97%! (证明:http://jsperf.com/tostring-vs-basic-js)正如我所说,我知道 toString 很有用,但是当人们提出有关 Javascript 变量类型的问题时,通常会出现 toString() 。这就像基本的 Javascript。每个浏览器都可以做引号。
parseInt 也是如此。现在,在我发现 parseInt 之前,我发现将字符串乘以 1 会将其转换为数字。那是因为你不能自然地将一个字符串相乘,从而强制 Javascript 将其视为一个数字。
var message = "4321";
var myNumber = message*1;
现在,有趣的是,这比 parseInt 慢,但相差不大。我还注意到空字符串或没有数字的字符串将返回 0,而 parseInt 将返回 NaN,因为字符串中没有数字。再一次,我意识到 parseInt 更快并且可以转换为不同的基数。但是,乘法更短,适用于任何浏览器,记住,parseInt 只会返回整数。那么为什么它总是作为问题的答案出现,询问如何转换为数字/NaN 是什么?
现在这可能有点偏离主题,但我实际上想知道关于 jQuery 的类似事情。再一次,jQuery 是我从未真正理解过其用途的东西。 Javascript 代码是干净的,jQuery 本身就是一个 JS 文件,所以它不能做任何 Javascript 不能做的事情。它可能会简化某些功能和内容,但为什么不直接将这些功能复制到您的页面,而忽略您不使用的其余功能呢?仅仅为了完成一个简单的任务而包含 jQuery 似乎有些矫枉过正。动画在这里也不异常(exception)——因为这也可以用原生 Javascript 来完成。那么为什么选择 jQuery?
最终我要问的是,既然有更好的方法,为什么我们需要这些东西来达到这些目的?或者它们是更好的方法?一般来说,使用函数是更好的做法吗?
最佳答案
Not only is this shorter, but according to JSPerf the toString method is 97% slower!
除非您每秒对数亿个数字调用 .toString()
并且您通过分析发现这是应用程序中的瓶颈,这应该根本不是一个因素。
But admit it: we mainly use toString for converting numbers to strings
如您所见,这可以通过将字符串和数字相加来隐式完成,因此我看不到使用 '' + n
代替 的任何好处n.toString()
。当您实际上没有将 n
与字符串连接时,后者更具可读性。
However, multiplying is shorter, will work in any browser, and parseInt, remember, will only return integers.
你是说 parseInt
不是在所有浏览器中都有效吗?如果您想将某些东西解析为整数,请使用 parseInt
。如果您想将某些内容解析为 float (JavaScript 实际上并没有特殊类型,所有数字都是 float ),请使用 parseFloat
。
更常见的模式是使用 +'123'
,它与 1 * '123'
具有完全相同的行为。 parseInt
可以正确处理空字符串,但无论出于何种原因,都不会像您期望的那样验证字符串。一元加号在出现错误时返回 NaN
,但会错误地处理空格和空字符串。这是 JavaScript 的缺点之一,所以如果您以 10 进制工作,那么在两者之间确实没有具体的选择。
So why does it always come up as the answer to questions, asking how to convert to numbers/what NaN is?
因为规范包含这些将字符串转换为数字的函数,并且像您所做的那样使用二元运算符将字符串转换为数字是副作用,而不是主要目的。您还可以使用 parseInt
解析不同基数的整数,这对于类型强制是不可能的。
It may simplify certain functions and stuff, but why not just copy those functions to your page then and leave out the remaining functions you don't use?
如果您从 CDN 加载 jQuery,那么用户的浏览器很有可能已经下载并缓存了它,从而几乎不存在下载时间和膨胀问题。如果您进行“自定义构建”,我敢打赌它会使网站在首次加载时变慢。
And animation isn't excused either here - because that too can be done with native Javascript.
一切都可以。每次写东西都重新发明轮子是没有意义的。
关于javascript - 方法与基本 JS?我应该使用 toString 吗?解析整数?查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879341/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!