js——键盘点击事件 闭包函数

键盘点击事件

		document.onkeypress=function(ev){
            var e=ev||window.event;
            console.log(e.keyCode); // 获取所点击的ASC码
        }

闭包函数
概念:

密闭的容器,类似 Set、Map 容器
闭包是一个对象,储存数据格式:value:key

形成:

函数嵌套
内部函数引用外部函数的局部变量

特点:

优点:延长外部函数局部变量的生命周期
缺点:容易造成内存泄漏

原因:

fn1 内的变量按理在函数执行完成应该被销毁,但其被 fn1 内 return 的 fn2 所引用,导致始终无法释放内存,所以 fn1 的变量还能保持其状态,这也是大量使用闭包导致内存泄漏的原因

注意点:

合理使用闭包
用完闭包要及时销毁

作用:
1、外部引用局部变量:

        function f1() {
            let name = 'lucy'
            function f2() {
                console.log(name);
            }
            return f2()
        }
        
        f1() // lucy

2、封闭作用域——小闭包(自调用,不外调):(function(){})();

避免同名影响

		//两个 age 互不影响
		(function(){
            var age=18;
            console.log(age); // 18
        })();
        (function(){
            var age=19;
            console.log(age); // 19
        })();

3、作用域:由里向外查找,最近原则

优化性能

		// 直接从 document 查找不用再上级查找
		(function(document){
            var test1=document.getElementById('test1');
            var test2=document.getElementById('test2');
            var test3=document.getElementById('test3');
            console.log(test1, test2, test3);// <div id="test1"></div>  <div id="test2"></div>  <div id="test3"></div>
        })(document);

		<div id="test1"></div>
		<div id="test2"></div>
		<div id="test3"></div>

4、参数传递

		function test(x){
            return function(y){
                console.log(x+y);
            }
        }
        test(10)(15);//25

5、闭包节流

        function throttle(fn, delay) {
            var timer=null;
            return function () {
                clearInterval(timer);
                timer=setInterval(fn,delay);
            }
        }
        window.onresize=throttle(function () {
            console.log(1);
        },10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值