不同浏览器下js的字符串split方法的差异

嘛,最近在各种直接拿代码调试,发现的问题可能稍微多了一点,姑且都记下来,这个随笔以后可能会不定期更新,因为相信不同浏览器之间各种差异还是很多的。

 

直接上代码

 

 1 <html>
 2     <head>
 3     </head>
 4 
 5     <body>
 6         <script>
 7             var str = "/part1/part2";
 8             var _list = str.split(/[\\/]/);
 9             for(var i = 0;  i < _list.length; i++)
10             {
11                 var t = "_list[" + i + "]  :  " + "\'" +  _list[i]  + "\'";
12                 alert(t);
13             }
14         </script>
15     </body>
16 </html>

 

分别打开ff、chrome和IE8查看效果,发现结果是不同的

 

其中ff和chrome结果一样,是

[0] => ''

[1] => 'part1'

[2] => 'part2'

 

而IE8则是

[0] => 'part1'

[1] => 'part2'

 

所以如果通过索引来使用_list的话,自然浏览器之间就会出现不同的结果了

 

 

换一组代码,注意  var str = 的这行代码不同了

 

 1 <html>
 2     <head>
 3     </head>
 4 
 5     <body>
 6         <script>
 7             var str = "part1/part2/";
 8             var _list = str.split(/[\\/]/);
 9             for(var i = 0;  i < _list.length; i++)
10             {
11                 var t = "_list[" + i + "]  :  " + "\'" +  _list[i]  + "\'";
12                 alert(t);
13             }
14         </script>
15     </body>
16 </html>

ff与chrome表现仍然一致,

[0] => 'part1'

[1] => 'part2'

[2] => ''

 

而IE8为

[0] => 'part1'

[1] => 'part2'

 

往后的例子就不再举了,但是可以发现的一个规律是,IE8把分割出来之后的空字符串都给吞了。。。这简直让人无语。。。

 

但是不使用正则表达式时,IE8却又没有问题了,注意  var _list = str.split("/");  而不是正则   var _list = str.split(/[\\/]/);

<html>
    <head>
    </head>

    <body>
        <script>
            var str = "part1//part2/";
            var _list = str.split("/");
            for(var i = 0;  i < _list.length; i++)
            {
                var t = "_list[" + i + "]  :  " + "\'" +  _list[i]  + "\'";
                alert(t);
            }
        </script>
    </body>
</html>

 

嗯,IE8又满血复活了。。。

 

posted @ 2014-08-21 17:13  落着雪  阅读(307)  评论(0编辑  收藏  举报