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 相关文章推荐
给Function做的OOP扩展
May 07 Javascript
JavaScript中获取元素索引的函数
Sep 10 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
Sep 30 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
Nov 24 Javascript
jquery基础知识第一讲之认识jquery
Mar 17 Javascript
原生JS实现旋转木马式图片轮播插件
Apr 25 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
使用Sonarqube扫描Javascript代码的示例
Dec 26 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 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
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
去除php注释和去除空格函数分享
2014/03/13 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Python with的用法
2014/08/22 Python
python 循环while和for in简单实例
2016/08/16 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
简单英文演讲稿
2014/01/01 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
赔偿协议书范本
2014/09/12 职场文书
给老师的感谢信
2015/01/20 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
考试没考好检讨书
2015/05/06 职场文书
校园开放日新闻稿
2015/07/17 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL