0

我正在通过一些简单的循环算法测验来学习基本的 JavaScript。

在编写代码以打印'*'时,就像下面的控制台消息一样,

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

我制作了如下代码。

let a = "*****";

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

我将子字符串方法的参数的作用与替换方法的作用混淆了。

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

但效果很好!

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

在 ECMA 定义子字符串方法时,我应该将其理解为一种规则吗?

like '如果子字符串的第一个参数是字符串类型,则将其视为数字0'

这是什么原理?

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

4

2 回答 2

0

我相信它是 JavaScript 中“类型强制”的二重奏,这意味着将值从一种数据类型自动或隐式转换为另一种数据类型

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

于 2021-08-26T07:47:31.060 回答
0

javascript 中的substring方法让您可以选择字符串。例如,您想在“测试”字符串中获取“测试”部分,您可以使用substring方法。第一个参数是字符串本身,该函数的第二个参数是一个数字,它将从字符串中选择多个字符。在您的程序中,您根据循环中*的值选择多个。i这是一个简单的substring方法示例。

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

于 2021-08-26T07:54:35.390 回答