JavaScript为什么要准备弃用substr

今天无意中用到这个方法,发现 deprecated 的标识
更新于: 2023-02-28 13:25:03

因为 JS 一开始有 "make it look like java" 的命令,所以只抄了 JDK1.0 中 java.lang.String 中的 substring(beginIndex, endIndex) 方法,注意在 JDK 1.0 中,如果 beginIndex 大于 endIndex,它会自动给你交换一下参数,也就是 .substring(4, 1) 会等价于 .substring(1, 4)。然而后来 Java 自己改掉了,可能是耍小聪明反而成了坑,SpiderMonkey 也在 <script    LANGUAGE="JavaScript1.2"> 中去掉了这个交换的逻辑,不过最终也没有进入规范,被坑了。同时,BE 也在 js1.2 中把 Perl4 的substr(begin, length)和 Python 1 的 slice(begin, end)都抄了过来。最终 substr 没有进入 ES1 规范。由于 Python 的 slice 支持负数索引,而且数组上也存在 slice 方法,所以应该是普遍被认为最好记,最好用,忘掉 substr和 substring吧。

 

参考

https://www.zhihu.com/question/541649347/answer/2559690224