// 一个接一个运行
// timeout 不能直接放在 for 里面,暂时不知道为什么
function functionOneByOne(fn, times, duration) {
  for(var i=0; i<times; i++) {
    timecout(i);
  }
  function timecout(index) {
    setTimeout(function(){
      if (fn) fn(index);
    }, duration*index);
  }
}
// 区间内持续时间的变化,比如可以做平滑动画什么的
function smooth(start, end, duration, fn) {
  var start = start || 0,
    end = end || 0,
    offset = end - start,
    duration = duration || 1000,
    now = Date.now(); a();   function a() {
    var x = Math.min(1, (Date.now() - now) / duration);
    if (fn) fn(offset * x + start);
    1 > x && setTimeout(a, 10);
  }
}

  

// 求数组 arr 中的最大最小值
Math.max.apply(Math, arr);
Math.min.apply(Math, arr);

  

//字符串去首尾空格
String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g, "");};

  

// 区间内的随机数
function RandomNumber(min, max) {
  return (min||0) + Math.random() * ((max||1) - (min||0));
}

  

// 获取 search 中对应键的值
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}

  

// 生成一个连续数字的数组
function creatNumberArray(length, start) {
  var arr = []; start = start || 0;
  for(var i=start; arr.push(i++)<length;);
  return arr;
}

  

// 数字数组 arr 改成从小到大排序
arr.sort(function(a,b){return Math.random()>0.5 ? -1 : 1;});

  

// 获得 dom 元素,可传入 类名/索引/对象
function getElem(o, box) {
if (typeof o == "string") return document.querySelector(obj);
else if (typeof o == "number") return getObj(box).eq(o)[0];
else if (typeof o == "object") {
if (typeof o.css == "function") return o[0];
else return o;
}
}
// 获取 jquery 元素,参数同上
function getObj(o, box) {
if (typeof o == "string") return $(o);
else if (typeof o == "number") return getObj(box).eq(o);
else if (typeof o == "object") {
if (typeof o.css == "function") return o;
else return $(o);
}
}

  

// 将 html 编译成 text
function encodeHTML( str ) {
  var elem = document.createElement('span');
  elem.appendChild( document.createTextNode( str ) );
  return elem.innerHTML;
}
// 将 text 编译成 html
function decodeHTML( str ) {
  str = str.replace(/</g,'<').replace(/>/g,'>')
  var elem = document.createElement('span');
  elem.innerHTML = str;
  return elem.textContent || elem.innerText;
}

  

// 产生随机颜色
function randomColor() {
  var rand = Math.floor(Math.random() * 0xFFFFFF).toString(16);
  if (rand.length == 6) return '#' + rand;
  else return randomColor();
}

  

这些方法个人都用得挺多的,然后再分享一个最近发现的装逼技能。

var x = i * i, i == 5 && fn();
// “,” 虽然看上去和 “;” 类似,但更容易表明 i 和 fn() 有基情
// 其次,&& 则类同于 if(i == 5) fn(); 是不是很带感, i < 10 || fn(); 则能等同于 if(i != 5) fn();

一些逼格略高的 js 片段的更多相关文章

  1. 编写高质量JS代码的68个有效方法(八)

    [20141227]编写高质量JS代码的68个有效方法(八) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  2. 编写高质量JS代码的68个有效方法(七)

    [20141220]编写高质量JS代码的68个有效方法(七) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  3. 编写高质量JS代码的68个有效方法(六)

    [20141213]编写高质量JS代码的68个有效方法(六) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  4. 编写高质量JS代码的68个有效方法(四)

    [20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  5. 编写高质量JS代码的68个有效方法(三)

    [20141030]编写高质量JS代码的68个有效方法(三) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  6. 编写高质量JS代码的68个有效方法(二)

    [20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  7. JavaScript手札:《编写高质量JS代码的68个有效方法》(一)(1~5)

    编写高质量JS代码的68个有效方法(一) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...

  8. 广告等第三方应用嵌入到web页面方案 之 使用js片段

    在自己的项目中嵌入过广告的朋友们可能都用过百度联盟, 只需要嵌入如下一段js代码片段, 就可以在自己的项目中嵌入广告, 来获得收益. <script type="text javasc ...

  9. 编写高质量JS代码中

    前段时间看了几道关于前端javascript的面试题目,方觉函数调用模式等基础的重要性.于是,下定决心,好好补补基础,即便不能深入语言的内部设计模式,也要对基本面向对象概念有比较深入的理解. 继续上一 ...

随机推荐

  1. SHA信息摘要

    SHA算法是在MD4的基础上演进而来的,通过SHA算法能够获得一个固定长度的摘要信息.   SHA算法系列有SHA-1(也成为SHA),SHA-224,SHA-256,SHA-384和SHA-512这 ...

  2. 【Python + ATX基于uiaotumator2】之Android—APP自动化简易例子

    上代码: import uiautomator2 as u2 from time import sleep d = u2.connect_usb('608ad0fe') #打开小卖 # d(text= ...

  3. cookie小细节

    设置cookie时,不像设置session,可以马上生效,它的生效时间是下一次请求页面.

  4. HDU1712ACboy needs your help【分组背包】

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. TOC之关键链项目管理遇到软件project7原则

    编著者:张克强    微博:张克强-敏捷307 软件project7原则简单介绍 美国著名软件project专家鲍伊姆(B.W.Boehm,也又另译为勃姆)在总结软件project准则和信条的基础上, ...

  6. Invalid bound statement (not found) 问题处理

    最近开发过程中遇到一个BUG:Invalid bound statement (not found): com.mapper.ResourceIdMappingsBatchMapper.deleteR ...

  7. 锁(java, DB)

    知识点 事务 锁(java, DB) 多线程知识点整理 锁(java, DB) 什么是锁 对资源的访问权限进行控制 如果把一个资源(对象)比喻成屋子.就好像你进入了屋子锁上了门.你家人和贼都进不去了. ...

  8. JavaScript中对事件简单的理解

    事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...

  9. python函数回顾:help()

    描述 help() 函数用于查看函数或模块用途的详细说明. 语法 help 语法: help([object]) 参数说明: object -- 对象: 返回值 返回对象帮助信息. 实例 以下实例展示 ...

  10. Android系统移植与调试之------->build.prop生成过程分析

    本文简要分析一下build.prop是如何生成的.Android的build.prop文件是在Android编译时刻收集的各种property(LCD density/语言/编译时间, etc.),编 ...