这个代码在所有主流浏览器中都是安全的吗?
var string = '123'
alert(string[1] == '2') // should alert true
答案 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)