有人可以向我解释一个函数可以等于0吗?

问题描述:

function containsPunctuation(word) 
{ 
    var punctuation = [";", "!", ".", "?", ",", "-"]; 

    for(var i = 0; i < punctuation.length; i++) 
    { 
     if(word.indexOf(punctuation[i]) !== -1) 
     { 
      return true; 
     } 
    } 

    return false; 
} 


function isStopWord(word, stopWords) 
{ 
    for (var i = 0; i < stopWords.length; i += 1) 
    { 
     var stopWord = stopWords[i]; 

     if ((containsPunctuation(word)) && (word.indexOf(stopWord) === 0) && (word.length === stopWord.length + 1)) 
     { 
      return true; 
     } 
     else if (word === stopWord) 
     { 
      return true; 
     } 
    } 

    return false; 
} 

在blockquote中,containsPunctuation(word) && (word.indexOf(stopWord) === 0怎么样?有人可以解释为什么他们都等于零?我也不确定为什么使用(word.length === stopWord.length + 1)有人可以向我解释一个函数可以等于0吗?

+1

什么是输入值? – Sparrow

+0

这是给出的(“森林甘瓜,亚军”,[“the”]) –

我想你正在阅读的if语句有点不正确。不知道isStopWord函数应该做什么我不能告诉你什么是(word.length === stopWord.length + 1)的一部分。

我可以告诉你(containsPunctuation(word))是它自己的布尔值,因为那个函数返回一个truefalse。这部分是它自己的评估。

第二部分(word.indexOf(stopWord) === 0)也是一个完整的评估。这部分与containsPunctuation函数无关。所述indexOf函数返回一个整数,因此它可以等于0。

第三部分(word.length === stopWord.length + 1)被检查,看看是否的word长度比的stopWord长度更之一。

它们都是独立的评估,因为您正在使用&他们之间的一切&,他们都必须为了紧随其后的运行代码块计算为true

这里是indexOf文档字符串和数组:在您的评论的光

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

- 编辑 - ,我对(word.length === stopWord.length + 1)猜测是因为这个词可能包含stopWord中未包含的标点符号,所以如果检查将只在标点位于单词的末尾时才返回true,因为如果停用词从头开始,indexOf检查将仅返回0的词。

+0

这些指导原则: 首先编写一个函数containsPunctuation(单词),它包含一个单词并返回true,如果单词包含标点符号。随意使用我们在下面给出的标点符号。 其次,写一个函数isStopWord(word,stopWords),它接受一个单词,如果它是一个停用词,则返回true。该检查将根据单词是否包含标点符号而有所不同。使用Array.prototype.indexOf在任何情况下都不起作用。 –

+0

我为你添加了一个编辑 – SeanKelleyx

+0

谢谢肖恩。所以'(word.indexOf(stopWord)=== 0)'基本上是问'stopWord'是否在'word'的位置0? –