Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript数组索引';未定义';在Internet Explorer中_Javascript_Internet Explorer_Google Chrome - Fatal编程技术网

JavaScript数组索引';未定义';在Internet Explorer中

JavaScript数组索引';未定义';在Internet Explorer中,javascript,internet-explorer,google-chrome,Javascript,Internet Explorer,Google Chrome,下面的脚本为字符串中的每个字符打印未定义到控制台,但在Chrome中工作正常 <script> function main() { var x = "hello world"; for ( var i = 0; i < x.length; ++i ) { console.log( x[i] ); } } main(); </script> 函数main() { var x=“你好世界”; 对于(变量i=0;i

下面的脚本为字符串中的每个字符打印未定义到控制台,但在Chrome中工作正常

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

函数main()
{
var x=“你好世界”;
对于(变量i=0;i

我是否必须对阵列做些什么才能使其在所有浏览器中正常工作?

某些浏览器支持
[]
,但并非所有浏览器都支持:

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

为获得最大兼容性,请改用:


函数main()
{
var x=“你好世界”;
对于(变量i=0;i
旧版本的IE不支持数组符号(
string[x]
)要访问字符串,请改用:


函数main(){
var x=“你好世界”;
对于(变量i=0;i
此外,如果直接执行函数,还可以创建一个自动执行的匿名函数(以保留作用域/不污染全局命名空间)


(函数main(){
var x=“你好世界”;
对于(变量i=0;i

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

这里的问题是
控制台。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>

函数main()
{
var x=“你好世界”,result=“”;
对于(变量i=0;i

编辑:

  • console
    对象在IE10之前不存在(正如Cerburs正确指出的,除非您打开IE开发者工具,在这种情况下,它也存在于IE8上)
  • []
    访问字符串字符可以在IE8+中使用(在IE7上还不起作用)

如果使用以下代码,请尝试将超时值增加到最大值

window.setTimeOut('Your Js function(), 150)
现在,它增加到

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

IE8确实非常支持它,请参见我的answer@MarcoDemaio:那么我如何登录IE8?简单:IE开发者工具比IE 10老得多。OP谈论的是“JavaScript数组索引未定义”。这与控制台无关。
console
对象只有IE10,我测试了它,如果您不信任,请参阅Microsoft参考:伙计,我在这里运行IE8,并在我们说话时将内容记录到控制台。此外,用户说“将
未定义的
打印到控制台”MS可以告诉我控制台对象在IE10之前不存在,但他们以前就错了。我非常喜欢IE8,MSDN对此无能为力。IE8确实非常支持
[]
字符串,请参阅我的回答尝试在不支持
console.log
的IE版本上运行此功能。它们也不支持类似数组的字符串访问。IE7不支持我的代码,但我想用户还没有使用IE7。无论如何,我更新了答案,但IE8、IE9和IE10都支持
[]
,它们不需要
charAt
。这就是为什么我认为用户的问题在于
console.log
。有一个控制台:)对您的编辑进行了更正:如果用户安装了开发工具,
控制台在IE8/9中确实存在。
<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>
window.setTimeOut('Your Js function(), 150)
window.setTimeOut('Your Js function(), 2000)