以下脚本为字符串中的每个字符将undefined打印到控制台,但在 Chrome 中可以正常工作。
<script>
function main()
{
var x = "hello world";
for ( var i = 0; i < x.length; ++i ) {
console.log( x[i] );
}
}
main();
</script>
我是否必须对数组做一些事情才能让它在所有浏览器中正常工作?
以下脚本为字符串中的每个字符将undefined打印到控制台,但在 Chrome 中可以正常工作。
<script>
function main()
{
var x = "hello world";
for ( var i = 0; i < x.length; ++i ) {
console.log( x[i] );
}
}
main();
</script>
我是否必须对数组做一些事情才能让它在所有浏览器中正常工作?
某些浏览器[]
支持,但不是全部:
类似数组的字符访问(上面的第二种方式)不是 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>
旧版本的 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>
当然,除非您还必须从其他地方运行它。
这是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 上它还不能工作)如果您使用以下代码,请尝试将 TimeOut 值增加到最大值...
window.setTimeOut('Your Js function(), 150)
现在,它增加到
window.setTimeOut('Your Js function(), 2000)