为什么在IE中`mystring[0]`没有返回任何值?

3

所以在我的 JavaScript 代码中,我有以下代码:

    var wholeHash = window.location.hash.substring(1);
    var data = new Object();

    // Remove the bang or slash if one appears at the beginning
    if (wholeHash[0] == '!') { wholeHash = wholeHash.substring(1); }
    if (wholeHash[0] == '/') { wholeHash = wholeHash.substring(1); }

当这段代码运行时,`wholeHash` 的值为 `"/search/&&stype=quick"`。然而,`wholeHash[0]` 返回空值,导致 `wholeHash[0] == '!'` 为假。这种情况只在IE中出现。
为什么会这样呢?我知道可以使用 `startswith` 替代,但我对于IE无法获取字符串的单个字符感到好奇,而其他浏览器却可以。
3个回答

6
由于使用类数组索引方式访问字符串是一项新功能,而早期版本的IE浏览器不支持此功能。因此,如果你需要在IE8之前的版本中使用,你需要使用mystring.charAt(0)来代替。

请原谅,但IE已经实现了它。也许只是你仍在使用的那个原始版本的IE没有实现。 - Niet the Dark Absol
我正在使用IE9,所以它没有这个。 - KallDrexx
似乎有一些不一致之处,关于哪个版本的IE有这个功能,哪个没有。可能与IE运行的模式(quirks与standards以及向后兼容模式)有关。 - Matt Greer
2
@KallDrexx 使用 <meta http-equiv="x-ua-compatible" content="ie=edge"/>,你就可以得到它,以及更多好的东西。 - Teemu

2

我之前遇到过类似的问题。我的情况与兼容性视图自动在企业内部网页上启用有关。请查看这个问题


1

从字符串中获取字符的“正确”方法是使用mystring.charAt(x)

但是,您可以使用mystring.split("")将字符串拆分为数组。

由您决定哪种方法更适合您。


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