JavaScript的漂亮的代码片段


Posted in Javascript onJune 05, 2013

 动态构建正则表达式

 new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) )

来自sizzle,动态构建正则时,这样做避免了字符转义。

更灵活和巧妙的数字补零

function prefixInteger(num, length) {
    return (num / Math.pow(10, length)).toFixed(length).substr(2);
}

 取数组的最大和最小值

Math.max.apply(Math, [1,2,3]) //3
Math.min.apply(Math, [1,2,3]) //1

产生漂亮的随机字符串

Math.random().toString(16).substring(2); //8位
Math.random().toString(36).substring(2); //16位

 获取时间戳

相对于
var timeStamp = (new Date).getTime();
如下方式更方便:

var timeStamp = Number(new Date);

 转换为数值并取整

var result = '3.1415926' | 0; // 3

字符串格式化

function format(format) {
    if (!FB.String.format._formatRE) {
      FB.String.format._formatRE = /(\{[^\}^\{]+\})/g;
    }
    var values = arguments;
    return format.replace(
      FB.String.format._formatRE,
      function(str, m) {
        var
          index = parseInt(m.substr(1), 10),
          value = values[index + 1];
        if (value === null || value === undefined) {
          return '';
        }
        return value.toString();
      }
    );
  }

  使用:
format('{0}.facebook.com/{1}', 'www', 'login.php'); 
//-> www.facebook.com/login.php

交换两个变量的值

var foo = 1;
var bar = 2;
foo = [bar, bar=foo][0];

RegExp Looping

String.prototype.format = function ( /* args */ ) {
  var args = arguments;
  return this.replace( 
     /\{(\d+)\}/g, 
     function (full, idx) {
         return args[idx];
     } )
}
'Hello {0}, How{1}'.format( 'Bob', ' you doin');
// => Hello Bob, How you doinhttp://mazesoul.github.com/Readability_idioms_and_compression_tolerance/#31.0

定义即运行函数

( function() {
// do something
} )();

这确实是最简单的技巧,但也是最实用的技巧。 奠定了JavaScript封装的基础。

三元运算

var some = con1 ? val1 :
           con2 ? val2 :
           con3 ? val3 :
           defaultVal;

一种函数注册-调用机制

来自CKEditor,我做了提取。

( function() {
var fns = [];
// 将可用下标访问属性的对象转换成数组
// 注意,IE下DOMNodeList会失败
function toArray( arrayLike, index ) {
 return Array.prototype.slice.call( arrayLike, index || 0 ); 
}
window.Util = {
 'addFunction' : function( fn, scope ) {
  return fns.push( function(){
   return fn.apply( scope || window, arguments );
  } ) - 1;
 },
 'removeFunction' : function( index ) {
  fns[ index ] = null;
 },
 'callFunction' : function( index ) {
  var fn = fns[ index ];
  return fn && fn.apply( window, toArray( arguments, 1 ) );
 }
};
} )();
// 应用场景
var fnId;
// 在闭包中,添加一个可供全局调用的函数
( function() {
 fnId = Util.addFunction( function( msg ) {
  alert( msg );
 } );
} )();
// 调用
Util.callFunction( fnId, 'Hello, World' ); //-> 'Hello,World';

短路运算

var something = 'xxxx';
console.log( true && something ); //-> 'xxx';
console.log( false && something ); //-> false
console.log( true || something );  // -> true
console.log( false || something );  //-> something
Javascript 相关文章推荐
jquery 简单导航实现代码
Sep 11 Javascript
jquery 最简单易用的表单验证插件
Feb 27 Javascript
多浏览器支持的右下角浮动窗口
Apr 01 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
js实现具有高亮显示效果的多级菜单代码
Sep 01 Javascript
AngularJS中transclude用法详解
Nov 03 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
Apr 01 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
老生常谈js中的MVC
Jul 25 Javascript
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 #Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
Jun 05 #Javascript
jquery 面包屑导航 具体实现
Jun 05 #Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
Jun 05 #Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
Jun 05 #Javascript
JQuery AJAX 中文乱码问题解决
Jun 05 #Javascript
Javascript自定义排序 node运行 实例
Jun 05 #Javascript
You might like
php Undefined index的问题
2009/06/01 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
Yii框架登录流程分析
2014/12/03 PHP
actionscript与javascript的区别
2011/05/25 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
React实现todolist功能
2020/12/28 Javascript
python算法学习之计数排序实例
2013/12/18 Python
深入理解Javascript中的this关键字
2015/03/27 Python
python脚本内运行linux命令的方法
2015/07/02 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python操作列表的函数使用代码详解
2017/12/28 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Python使用Matlab命令过程解析
2020/06/04 Python
Python self用法详解
2020/11/28 Python
python RSA加密的示例
2020/12/09 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
信息技术专业个人自我评价
2013/12/11 职场文书
大学学习生活感言
2014/01/18 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
上课说话检讨书500字
2014/11/01 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
vue封装数字翻牌器
2022/04/20 Vue.js