作家
登录

JS trim去空格的最佳实践

作者: 来源:www.28hudong.com 2013-03-30 00:40:42 阅读 我要评论

刚好上次有同学提出疑问。刚好可以自测一下。先来看看老道在《JavaScript 精粹》P33 写的吧。他对 String 对象扩展了一个 trim() 方法: 复制代码 代码如下: Function.prototype.method = function(name, func) { this.prototype[name] = func; return this; }; String.method('trim', function() { return this.replace(/^s+|s+$/g, ''); }); 熟悉吧,/^s+|s+$/g,这样的正则表达式。多少框架在用呢。比如 jQuery 的 trimLeft, trimRight: 复制代码 代码如下: // Used for trimming whitespace trimLeft = /^s+/, trimRight = /s+$/, 这是最佳实践么?但我们框架使用的不是这种方法(暂且称为半正则方法)。上次在其他产品组在内部 PK 的时候,说过,为什么我们框架要用下面这样的方法来实现 trim(),而不是用上面的那种。 复制代码 代码如下: trim: function(){ var str = this.str.replace(/^s+/,''); for(var i= str.length - 1; i >= 0; i--){ if(/S/.test(str.charAt(i))){ str = str.substring(0,i+1); break; } } return str; } 原因工友已经说了,因为正则的反向匹配比较慢。我对其性能进行了对比。综合速度和写法上来说,个人还是偏向于第一种写法。因为速度其实相差很少很少。从代码来说第二种比较晦涩并且并字节很多,这对于一个流量很高但需要用 trim() 很少的网站来说,第一种明显比较合适,看看下面的测试结果(自已测试,猛击这里): 啊?原来不是半正则的方式最快啊?是的,其实很多高级浏览器中已经默认提供 trim() 了。速度就不用说了,100 倍?哈哈哈。最后,方案如下:复制代码 代码如下: if(!String.prototype.trim){ String.prototype.trim = function(){ return this.replace(/^s+|s+$/g, ''); } }

  推荐阅读

  stream.js 一个很小、完全独立的Javascript类库

<script src='stream-min.js'></script> 下载 stream.js 2Kb minified streams是什么? Streams 是一个操作简单的数据结构,很像数组或链接表,但附加了一些非凡的能力。 它们有什么特别之处? 跟数组不一样,stre>>>详细阅读


本文标题:JS trim去空格的最佳实践

地址:http://www.17bianji.com/kaifa2/JS/23995.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)