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计算时间差的函数分享
Jul 04 Javascript
JavaScript中的this关键字介绍与使用实例
Jun 21 Javascript
jquery使用ajax实现微信自动回复插件
Apr 28 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
Dec 05 Javascript
js实现文本框输入文字个数限制代码
Dec 25 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
Sep 17 Javascript
Node.js 8 中的 util.promisify的详解
Jun 12 Javascript
JS基于封装函数实现的表格分页完整示例
Jun 26 Javascript
Vue.js中对css的操作(修改)具体方式详解
Oct 30 Javascript
javascript实现弹出层效果
Dec 10 Javascript
vue 对axios get pust put delete封装的实例代码
Jan 05 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
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
深入解析php之sphinx
2013/05/15 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
Bootstrap精简教程
2015/11/27 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
详解vue路由
2020/08/05 Javascript
python求素数示例分享
2014/02/16 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
大学生创业项目方案
2014/03/08 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
Python中字符串对象语法分享
2022/02/24 Python
Python pyecharts绘制条形图详解
2022/04/02 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript