JS-22-闭包 / 表单补充 /循环索引同步

一、闭包

1.什么是闭包(closure)?
闭包是一种特殊的函数。

2.如何生成一个闭包?
当一个内部函数引用了外部函数的数据(变量/函数)时, 那么内部的函数就是闭包;
所以只要满足"是函数嵌套"、“内部函数引用外部函数数据”;

3.闭包特点:
只要闭包还在使用外部函数的数据, 那么外部的数据就一直不会被释放;
也就是说可以延长外部函数数据的生命周期;

4.闭包注意点:
当后续不需要使用闭包时候, 一定要手动将闭包设置为null, 否则会出现内存泄漏;

5.注意点: 在ES6中由于 { } 是块级作用域, 所以只要在块级作用域中定义了一个函数,
并且这个函数中用到了块级作用域中的数据, 那么这个函数就是闭包;


二、表单相关补充

1.如果想获取input中输入的内容, 必须通过value属性来获取;
2. 监听input失去焦点: onblur
3. 监听input获取焦点:onfocus

let oInput = document.quarySelector(".input");
oInput. onfocus = function(){
}

4.监听input内容改变:oninput / onchange

注意点:

  1. onchange 事件只有表单失去焦点的时候, 才能拿到修改之后的数据;
  2. oninput 事件可以时时获取到用户修改之后的数据, 只要用户修改了数据就会调用(执行);
    oninput 事件只有在IE9以及IE9以上的浏览器才能使用;
    在IE9以下, 如果想时时的获取到用户修改之后的数据, 可以通过onpropertychange事件来实现;
    如果是通过代码给input设置的数据, 那么不会触发oninput事件;

三、循环索引同步

在ES6中:
1.for循环中通过let定义的变量是一个局部变量;
2.for循环中通过let定义的变量每次执行循环体都会重新定义一个新的, 也就是每个循环体都有一个属于自己的变量;
3.for循环中如果定义了函数, 这个函数用到了通过let定义的变量, 那么这个函数是一个闭包;


四、命名技巧

1.在前端开发中,如果 id 名称是由多个单词组成,那么建议使用下划线来连接。
< div id = "top _ top ">

2.在前端开发中,如果 class 名称是由多个单词组成,那么建议使用中划线来连接。
< div class = "tab - content" >

3.如果在方法名称前加上 _ ,代表告诉其他程序员这是一个私有的方法,不要调用。
_ change ( i) ;
注意点:仅仅是告诉别人这是一个私有的方法,并不是真正的一个私有的方法;(主要是为了提高阅读性)


-End

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值