JavaScript substring方法传入字符串类型参数仍正常运行的原理是什么?
JavaScript substring传入字符串参数正常运行的原理
这一表现完全符合ECMAScript规范的定义,背后的运行逻辑如下:
String.prototype.substring()接收的两个位置参数,都会先被强制转换为数字类型再进行后续处理。- 你传入的第一个参数是变量
a,也就是值为*****的字符串,转换为数字的结果是NaN。 - ECMA规范明确要求:如果
substring的参数经过类型转换后为NaN、负数或者无穷值,会被自动替换为0。 - 因此你写的
a.substring(a, i)实际执行时等价于a.substring(0, i),正好匹配你原本想要实现的逻辑,所以最终输出了预期的倒三角星号效果。
额外补充:如果把
substring换成slice方法,这一逻辑也同样成立,因为slice对于NaN类型的位置参数也会按0处理。
内容的提问来源于stack exchange,提问作者KimchiProgrammer
相关产品推荐
相关产品推荐

