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 相关文章推荐
浅谈javascript中的作用域
Apr 07 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
使用js实现数据格式化
Dec 03 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
Aug 28 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
AngularJS全局警告框实现方法示例
May 18 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 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快速统计某个数据库中每张表的数据量
2012/09/04 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
大专生简历的自我评价
2013/11/26 职场文书
大学生找工作推荐信范文
2013/11/28 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
单位介绍信格式
2015/01/31 职场文书
安装工程师岗位职责
2015/02/13 职场文书
写给老师的保证书
2015/05/09 职场文书
员工试用期工作总结
2019/06/20 职场文书
创业计划书之寿司
2019/07/19 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
python 闭包函数详细介绍
2022/04/19 Python