JavaScript数组索引';未定义';在Internet Explorer中
下面的脚本为字符串中的每个字符打印未定义到控制台,但在Chrome中工作正常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
<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)