js字符串可以用[]访问单个字符,为什么还要有charAt()? 这两者在性能上会有什么区别?一般提倡用哪种,有场景区分吗?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
这两种方式都可以获取到字符串对应位置的字符,获取的位置是从0开始。 下面说下区别:
第一个区别前面的都有提及,就是 使用string[index]的方式,对于超出字符index范围的,会返回undefined 而使用charAt(index)的方式,对于超出范围的会返回一个空的字符串。
第二个区别,是兼容性问题 string[index]的方式在IE6~8下会返回 undefined, 也就是IE6~8 不兼容此方法。 而charAt(index)经测试,在IE6~8下也能够正常返回值。
所以如果你不需要考虑IE6~8的话,就可以随便用了,至于性能,都是JavaScript的方法,差别微乎其微。 如果你还是苦逼的要考虑IE6~8的话,劝你还是老老实实的使用charAt吧,安全又放心,不就是多了几个字符吗?
var s = "abc"; s[1]; // b s.charAt(1); // b s[5]; // undefined s.charAt(5); // ""
所以,可能的原因是,当索引超出范围时,charAt() 返回的结果更合理,更好判断。
alert("abc"[3]); // undefined alert("abc".charAt(3)); // return ""
IE7和IE7以下的浏览器不支持直接用 '[]'这个操作符去获取指定索引上的字符
console.log("abc"[0]) // undefined
这两种方式都可以获取到字符串对应位置的字符,获取的位置是从0开始。
下面说下区别:
第一个区别前面的都有提及,就是
使用string[index]的方式,对于超出字符index范围的,会返回undefined
而使用charAt(index)的方式,对于超出范围的会返回一个空的字符串。
第二个区别,是兼容性问题
string[index]的方式在IE6~8下会返回 undefined, 也就是IE6~8 不兼容此方法。
而charAt(index)经测试,在IE6~8下也能够正常返回值。
所以如果你不需要考虑IE6~8的话,就可以随便用了,至于性能,都是JavaScript的方法,差别微乎其微。
如果你还是苦逼的要考虑IE6~8的话,劝你还是老老实实的使用charAt吧,安全又放心,不就是多了几个字符吗?
所以,可能的原因是,当索引超出范围时,charAt() 返回的结果更合理,更好判断。
IE7和IE7以下的浏览器不支持直接用 '[]'这个操作符去获取指定索引上的字符