JavaScript中IndexOf的正确使用方法

3

我有一条简单的JavaScript语句,它会读取一个字符串并根据其内容触发一个URL,但我不确定我是否正确地使用了IndexOf,所以我想确认一下。

以下是我的代码片段:

<script type="text/javascript"> 

var mc_u1 = "somevariable";

if (mc_u1.indexOf("1|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl1.com\">");
}

if (mc_u1.indexOf("1|Refer") > 0) {
document.writeln("<img src=\"https://www.someurl2.com\">");

}

if (mc_u1.indexOf("2|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl3.com\">");

}

if (mc_u1.indexOf("2|Refer") > 0) {
document.writeln("<img src=\"www.someurl4.com\">");

}

</script>

如上所示的代码,我正在尝试基于变量mc_u1的内容触发一个URL(虽然我已经掩盖了它们,但它们是不同的)。
我的问题是,如果mc_u1变量以1 | Accept开头,我在Javascript语句中应该使用> -1还是> 0
希望这有意义!
4个回答

4

来自 MDN:

string.indexOf(searchValue[, fromIndex])

返回调用 String 对象中指定值第一次出现的索引,从fromIndex开始搜索,如果未找到该值,则返回-1

因此,为了检查您的变量是否以"1|Accept"开头,您应该检查indexOf是否返回0


最好参考 ECMAScipt 标准中的 indexOf,而不是查找 MDN 中的标准语言特性。MDN 是一个维基站点,而不是权威机构,尽管有时候它可以提供一些很好的例子。 - RobG

3

0是第一个字符的索引,因此如果您的子字符串出现在字符串开头,则> 0将不匹配。因此,在字符串中的任何位置使用 > -1,并始终使用 == 0 来表示字符串开头。


0

在开始时应该使用== 0,因为索引将会是0


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接