JavaScript跨浏览器:将字符串视为数组是否安全?

时间:2011-04-08 19:26:24

标签: javascript arrays string cross-browser

这个代码在所有主流浏览器中都是安全的吗?

var string = '123'
alert(string[1] == '2') // should alert true

5 个答案:

答案 0 :(得分:14)

不,这不安全。 Internet Explorer 7不支持按索引访问字符串。

您必须使用charAt方法与IE7兼容:

var string = '123';
alert(string.charAt(1) == '2');

答案 1 :(得分:3)

JavaScript中的所有内容都是一个对象;数组,函数,字符串,一切。你提出的这段代码完全有效,虽然有点令人困惑 - 有更好的方法可以做到这一点

var str = '123';
str[1] === '2'; // true, as you've just discovered (if you're not in IE7)
// Better ways:
str.indexOf('2'); // 1
str.charAt(1); // '2'
str.substr(1, 1); // '2'
str.split(''); // ['1', '2', '3']

更好的方法是确保其他人在6个月内阅读您的代码(其他人或您自己)并不是str是一个数组。它使您的代码更容易阅读和维护

答案 2 :(得分:1)

我在IE7,IE8,Safari,Chrome和FF中测试过。一切都很好!

EDIT 只是为了踢它也在Konqueror工作! Js Fiddle example

答案 3 :(得分:0)

我真的不明白为什么你不能这样做......不过,你也可以使用.substring()

答案 4 :(得分:0)

它会起作用。如果您决定使用浏览器特定功能可能会出现问题(I.E xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");仅适用于Internet Explorer)