美文网首页
js方法积累

js方法积累

作者: chasing_dream | 来源:发表于2019-06-11 15:39 被阅读0次
//数幂的实现
function fun(a, b) {
    if(typeof a != "number" || typeof b != "number" ) return console.log("你输入的类型不对");
    var num = a;
    for (var i = b - 1; i > 0; i--) {
        num *= a;
    }
    console.log(num);
    }
fun(2,3);
阶乘的实现
function fun(a) {
    if(typeof a != "number" || a < 0 ) return console.log("你输入的类型不对");
    var num = 1;
    for (var i = 1; i <= a; i++) {
        num *= i;
    }
    console.log(num);
    }
fun(0);

//递归的实现;必须有出口;有一定的规律;

function factorial(n) {
    if(n==0 || n==1) {
        return 1;
    } else {
        return n * factorial(n-1);
    }
}
//函数角度性能优化函数记忆
function memorize(fn) {
    var cache = {};
    return function() {
        var key = arguments.length + Array.prototype.join.call(arguments);
        if(cache[key]) {
            return cache[key]
        } else {
            cache[key] = fn.apply(this, arguments);
            return cache[key]
        }
    }
}
console.log(factorial(5))
var newF = memorize(factorial)
console.time('first');
console.log(newF(5));
console.timeEnd('two');
console.time('first');
console.log(newF(5));
console.timeEnd('two');
//事件节流
<div id="show">0</div>
<button id="btn">click</button>
<script>
var oDiv =document.getElementById('show');
var oBtn =document.getElementById('btn');

function throttle(handler, wait) {
    var lastTime = 0;
    return function(e) {
        var nowTime = new Date().getTime();
        if(nowTime - lastTime > wait) {
            // handler();
            handler.apply(this, arguments)
            lastTime = nowTime;
        }
    }
}
function buy(e) {
    console.log(this,e)
    oDiv.innerText = parseInt(oDiv.innerText) + 1;
}
oBtn.onclick = throttle(buy, 1000)

</script>
//页面请求——防抖
<input type="text" id="inp">
<script>
var oInp = document.getElementById('inp');
function debounce(handler, delay) {
    var timer = null;
    return function(e) {
        var _self = this, _arg = arguments;
        clearTimeout(timer);
        timer = setTimeout(function() {
            handler.apply(_self, _arg);
        }, delay)
    }

}
function ajax(e) {
    console.log(e, this.value);
}
oInp.oninput = debounce(ajax, 2000)


相关文章

  • js方法积累

  • js积累

    1.判断浏览器是否有滚动条 2.阻止冒泡行为 1.event.stopPropagation();事件处理过程中,...

  • 解决事件需要e对象,还需要传别的参数

    方法一 HTML JS 方法二: HTML JS 方法三: HTML JS

  • Node.js 教程

    本系列文章介绍使用 Node.js 完成日常软件开发工作的基本方法和过程,纯属个人积累,欢迎参考。 Windows...

  • webview与js交互

    1.iOS调用js方法 先看下js的方法 上面就是js的方法,methodName是方法名由iOS和js双方约定,...

  • JS常用代码

    JS、jQuery插入元素的几种方法 方法一: HTML代码 JS代码 方法二: HTML代码 JS代码 方法三:...

  • # JS与WKWebview交互

    JS与WKWebview交互 1.ios调用js方法 比如js方法: ios执行这个方法并传值,同时接收js返回值...

  • iOS中 wkwebView与js 简单交互

    iOS 代码 js调用OC 方法 1、添加方法 2、接收js调用oc 的代理方法 3、移除js的监听方法 oc调用...

  • WebViewJavascriptBridge 使用

    目的 掌握 OC 调用 JS方法 JS 调用 OC方法 OC——>sender JS——> sender OC 调...

  • Javascript

    JS基础 《Javascript原理、方法与实践》 《JS原理、方法与实践》- Javascript简介 《JS原...

网友评论

      本文标题:js方法积累

      本文链接:https://www.haomeiwen.com/subject/cdagxctx.html