关于JavaScript子字符串方法参数类型错误的问题



我正在用一些简单的循环算法测试学习基本的JavaScript。

让代码打印'*'就像下面的控制台消息一样,

*****
****
***
**
*

我做了如下代码:

let a = "*****";
for (i = 5; i >= 1; i--) {
console.log(a.substring(a, i));
}

我把子字符串方法的参数角色和replace方法的参数角色混淆了。

我应该给出第一个参数0,而不是a。

但是效果很好!

试图在MDN找到一个原则,但我不能。

当ECMA定义子字符串方法时,我应该把它理解为一种规则吗?

等'如果substring的第一个参数是字符串类型,它将被视为数字0'

这个原则是什么?

感谢你阅读这个用糟糕英语写的问题。

javascript中的substring方法让您获得字符串的选择。例如,您想要在'testing'字符串中获得'test'部分,您可以使用substring方法。第一个参数是字符串本身,这个函数的第二个参数是一个数字,它将从字符串中选择一定数量的字符。在程序中,根据循环中i的值选择*的个数。下面是substring方法的一个简单示例。

const test = "testing";
console.log(test.substring(test,2)) // output 'te'
console.log(test.substring(test,4)) // output 'test'

我相信这是对的"type coercion"这意味着从一种数据类型到另一种数据类型的值的自动或隐式转换

在您的示例中,JavaScript需要第一个类型为Number的参数,当您提供字符串时,它首先查看字符串是否可以转换为数字,例如"3"是字符串但可以转换。由于第一个参数是一个字符串,作为数字没有意义,因此将其转换为0。

相关内容