3

以下脚本为字符串中的每个字符将undefined打印到控制台,但在 Chrome 中可以正常工作。

<script>
function main()
{
    var x = "hello world";
    for ( var i = 0; i < x.length; ++i ) {
        console.log( x[i] );
    }
}
main();
</script>

我是否必须对数组做一些事情才能让它在所有浏览器中正常工作?

4

4 回答 4

5

某些浏览器[]支持,但不是全部:

类似数组的字符访问(上面的第二种方式)不是 ECMAScript 3 的一部分。它是 JavaScript 和 ECMAScript 5 的特性。

为了获得最大的兼容性,请String.charAt()改用:

<script>
function main()
{
    var x = "hello world";
    for ( var i = 0; i < x.length; ++i ) {
        console.log( x.charAt(i) );
    }
}
main();
</script>
于 2012-12-28T13:44:48.137 回答
2

旧版本的 IE 不支持使用数组表示法 ( string[x]) 来访问字符串,请改用:charAt()

<script>
    function main() {
        var x = "hello world";
        for ( var i = 0; i < x.length; ++i ) {
            console.log( x.charAt(i) );
        }
    }
    main();
</script>

此外,如果您直接执行您的函数,您还可以创建一个自执行匿名函数(以​​保留范围/不污染全局命名空间)

<script>
    (function main() {
        var x = "hello world";
        for ( var i = 0; i < x.length; ++i ) {
            console.log( x.charAt(i) );
        }
    }());
</script>

当然,除非您还必须从其他地方运行它。

于 2012-12-28T13:44:59.957 回答
-1

这是console这里的问题。该对象在 IE Javascript 引擎中不存在。

如果你这样做,它适用于两者

<script>
function main()
{
    var x = "hello world", result = "";
    for ( var i = 0; i < x.length; ++i )
       result += x[i];
    document.write(result); //it prints "hello world" on page
}
main();
</script>

编辑:

  • console对象在 IE10 之前不存在(正如 Cerbrus 正确指出的那样,除非您打开 IE 开发人员工具,在这种情况下它也存在于 IE8 上)
  • []访问字符串 字符可以在 IE8+ 中使用(在 IE7 上它还不能工作)
于 2012-12-28T13:48:12.260 回答
-1

如果您使用以下代码,请尝试将 TimeOut 值增加到最大值...

window.setTimeOut('Your Js function(), 150)

现在,它增加到

window.setTimeOut('Your Js function(), 2000)
于 2015-09-16T10:16:28.727 回答