在循环取字符串中的字符时的注意事项

有时候需要对一个字符串的字符进行逐个判断,这通常通过一个循环来实现。顺序地循环地取出某个集合中的一个元素的这种程序,我们经常在处理数组时碰到,因为对于数组的元素,我们通过下标来引用,而下标可以很方便地使用递增变量来表示,从而很自然地进行循环处理。在碰到这种程序太多次后,对于字符串的逐个字符进行判断,有时也会不经意间写出如下程序。

var s = "Hello";
for (var i = 0; i < s.length; i++) {
var sChar = s[i];
// 对 sChar 作一些判断,这里作为例子就只是显示它。
alert(sChar);
}

点击这里运行

上面这段代码,就是将字符串s当作数组一样,通过s[i]来引用它的第i个字符。而且好在,现在的JavaScript居然也想到了我们的这种习惯,支持如上对字符的引用方法。所以以上代码在IE 8或者Google Chrome中,是可以按照我们预期地那样运行的。然而,最好还是避免以上编码习惯,因为如果是在其他的浏览器中(如Visual Web Developer 速成版2008中带的浏览器),可能会出现一些我们没有想到的情况,如sChar得到的不是一个字符,而是undefined。可以将以上的代码改成如下两者之一。

var s = "Hello";
for (var i = 0; i < s.length; i++) {
var sChar = s.substring(i, i+1);
alert(sChar);
}

点击这里运行

或者:

var s = "Hello";
for (var i = 0; i < s.length; i++) {
var sChar = s.charAt(i);
alert(sChar);
}

点击这里运行

Add comment

Loading