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 判断客户端浏览器类型代码
Mar 01 Javascript
jQuery拖动图片删除示例
May 10 Javascript
浅谈Sticky组件的改进实现
Mar 22 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
Dec 28 Javascript
vue组件间通信解析
Mar 01 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
webpack file-loader和url-loader的区别
Jan 15 Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 Javascript
微信小程序实现打卡签到页面
Sep 21 Javascript
vue常用高阶函数及综合实例
Feb 25 Vue.js
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垃圾回收机制简单说明
2010/07/22 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
python实现人人网登录示例分享
2014/01/19 Python
python实现rest请求api示例
2014/04/22 Python
Python实现一个简单的MySQL类
2015/01/07 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
python批量修改ssh密码的实现
2019/08/08 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
八一建军节感言
2014/02/28 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
寒假家长评语大全
2014/04/16 职场文书
临床医学专业求职信
2014/08/08 职场文书
三好学生事迹材料
2014/12/24 职场文书
追讨欠款律师函
2015/05/27 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python