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函数参数的可修改性问题
Dec 05 Javascript
jQuery之ajax删除详解
Feb 27 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
JS简单计算器实例
Jan 20 Javascript
jQuery对象与DOM对象之间的相互转换
Mar 03 Javascript
JavaScript记录光标在编辑器中位置的实现方法
Apr 22 Javascript
Vue中的Vux配置指南
Dec 08 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
JavaScript实现电灯开关小案例
Mar 30 Javascript
微信小程序使用GoEasy实现websocket实时通讯
May 19 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
Aug 27 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php eval函数用法总结
2012/10/31 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
PHP7常量数组用法分析
2016/09/26 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Jupyter notebook如何实现指定浏览器打开
2020/05/13 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
学python爬虫能做什么
2020/07/29 Python
总经理助理的八要求
2013/11/12 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
领导党性分析材料
2014/02/15 职场文书
我的理想演讲稿
2014/04/30 职场文书
新教师个人工作总结
2015/02/06 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
SpringBoot生成License的实现示例
2021/06/16 Java/Android
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL