JavaScript中的切片

JavaScript中的切片,javascript,slice,Javascript,Slice,我开始了一段JavaScript之旅,我需要详细了解以下代码。特别是它说if(str.slice(i,i+2)==”) var str=prompt(“输入一些文本”); var numChars=str.length; 对于(var i=0;i

我开始了一段JavaScript之旅,我需要详细了解以下代码。特别是它说
if(str.slice(i,i+2)==”)

var str=prompt(“输入一些文本”);
var numChars=str.length;
对于(var i=0;i
意思是,对于输入文本中的每个字母
i
,对于字母
i+2
,如果它们等于
,则它们是两个空格

换句话说,它检查文本中的两个字母组合中的每一个,看看它们是否匹配两个空格

例如:

“En”、“nt”、“te”、“er”、“r”、“s”、“so”、“om”等

因此,slice是在参数中指定的范围内“切片”字母:
str.slice(beginIndex[,endIndex])

Edit:没有看到prompt()调用,因此相应地进行了更新

也许可以尝试一下,以便更好地了解正在发生的事情:

var str = prompt("Enter some text");
var numChars = str.length;
for (var i = 0; i < numChars; i++) {
    if (str.slice(i, i + 2) === " ") {
        alert("No double spaces!");
        break;
    } else {
        document.write(str.slice(i, i + 2) + "<br>")
    }
}
var str=prompt(“输入一些文本”);
var numChars=str.length;
对于(var i=0;i”)
}
}
str.slice(i,i+2)
for
循环中的
i
i+1
将根据
for
循环分析每次提取两个连续字符的字符串
str
,其中
i
将具有
0
str
长度的所有值

注意:在此
的代码片段中,如果(str.slice(i,i+2)==”)
您将两个字符与单个字符(即空白)进行比较。所以这永远不可能是真的

请看一个更好的例子,以便更清楚地理解

var str1=“单个空格”;
var str2=“双空格”;
var numChars1=str1.length;
var numChars2=str2.length;
//检查str1是否有双空格
对于(var i=0;i}
您正在与单个空格进行比较

if (str.slice(i, i + 2) === " ") {
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                          ^^^ single space 

比较仅在一种情况下为
true
,在字符串末尾有一个空格。所有其他比较的计算结果均为
false
,因为长度为2的字符串永远不等于具有单个字符的字符串。

中,如果
,则它可能应该是
(两个空格)。该代码似乎不正确Indexof或regex更适合此问题而不是true。它应该是双空格。谢谢你的帮助。
if (str.slice(i, i + 2) === " ") {
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                          ^^^ single space