javascript - 为什么在 `substr` 已经存在时添加 `substring`?

标签 javascript

<分区>

我知道 substr(start[, length]) 之间有什么区别和 substring(start[, end]) .这是解决例如在这个较早的问题中:What is the difference between substr and substring?

但是为什么他们在 substring 已经存在的时候添加 substr?我正在寻找有关此决定历史的信息。

我发现 substring 从一开始就存在,然后在 Ecmascript 第 3 版中“突然”出现,它们有两个不同的函数,可以用不同的参数实现完全相同的事情。为什么?

最佳答案

如果没有十年前参与 ECMA 的人参与权衡,我认为我们无法确定地回答这个问题,但是我们可以推断出一些事情。

substring 请求开始的索引(从 0 开始),以及可选的结束索引(同样从 0 开始)。

substr 请求开始的索引(从 0 开始)和长度。这使得在某些情况下使用起来更简单,例如如果你想从第一个“s”中获取 2 个字符,你只需指定 2 作为长度,而不必先计算第一个“s”的索引,然后将其加 2,然后将两个位置传递给 子字符串

正如评论中指出的那样,substr 允许负起始位置。

可以说,substr 是一个更好的实现。因此,这很可能就是添加它的原因。

至于为什么两者都存在的问题,那可能是为了向后兼容。因为 Javascript 运行在各种各样的浏览器中(现在还有其他地方),在由多个组织维护的运行时中,没有简单的方法来弃用或消除任何东西。将它留在那里并向语言中添加更多内容会更容易。旧代码仍然有效,新代码有更好的选项可供使用。

关于javascript - 为什么在 `substr` 已经存在时添加 `substring`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32679724/

相关文章:

javascript - MUI - 单击复选框标签中的链接

javascript - 如何从 4 名玩家之间的 9 张牌中找出最高的一手牌?

javascript - 如何仅通过某些对象填充 Ember.js 的 Select?

javascript - 如何在子主题中覆盖联系表单7 js文件

javascript - 对 JavaScript 中的文档维度感到困惑

javascript - ReactJS 多级下拉菜单

javascript - jsPDF 不完整或损坏的 PNG 文件

javascript - bing map v7 到 v8 迁移 - 脚本导入问题

javascript - 谷歌分析 : prevent sending page title

javascript - JavaScript 如何处理模数?