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 判断中文字符长度的函数代码
Aug 27 Javascript
JS实现QQ图片一闪一闪的效果小例子
Jul 31 Javascript
纯js简单日历实现代码
Oct 05 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
jQuery新窗口打开外链接
Jul 21 Javascript
D3.js实现文本的换行详解
Oct 14 Javascript
每个 JavaScript 工程师都应懂的33个概念
Oct 22 Javascript
微信小程序实现禁止分享代码实例
Oct 19 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
js中Object.create实例用法详解
Oct 05 Javascript
javascript中Set、Map、WeakSet、WeakMap区别
Dec 24 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产生随机字符串函数
2006/12/06 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
PHP导入导出Excel代码
2015/07/07 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
Python目录和文件处理总结详解
2019/09/02 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
实体的生命周期
2013/08/31 面试题
与UNIX有关的几个名词
2015/09/17 面试题
品质主管的岗位职责
2013/12/04 职场文书
会议邀请函范文
2014/01/09 职场文书
募捐感谢信
2015/01/22 职场文书
环境建议书
2015/02/04 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
运动会100米广播稿
2015/08/19 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python