博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript高级
阅读量:7068 次
发布时间:2019-06-28

本文共 1731 字,大约阅读时间需要 5 分钟。

 

一、高级函数

  1、函数回调

  函数回调的本质:在一个函数中,当满足一定的条件,回调函数会当作调用函数的参数传入

  下面这个例子,faa作为回调函数,fbb作为调用函数。在JavaScript中内置的调用函数已经给我们写好了,我们只需写好fbb(回调函数)就好,就算你不写也不出错。

  既然已经写到了函数的回调,那么再写一个面向对象的回调

  上面这个例子,首先写一个对象,写好它的属性,方法。假如send方法就是内置的,早已经写好的方法,我们执行web.send(),虽然产生数据,但是最为程序员的我们并没有写处理这个数据的方法,所以我们为recved编写了一个处理数据方法,再去执行web.send(),这样产生的数据就能处理了。

  再说,比如事件的绑定,我们为className为div的div标签绑定鼠标点击事件

  在我们没有给div的点击事件写相应的函数时,程序并没报错,一旦为其添上方法,我们在触发该事件的话,那么我们写的方法会作为回调函数去执行。

  2、函数的闭包

  闭包目的:不允许提升变量作用域时,该函数的局部变量需要被其他函数使用

  闭包本质:函数的嵌套,内层函数称为闭包

  闭包的解决案例:①影响局部变量的生命周期,持久化局部变量 ②解决变量污染

//这就是闭包,一个函数想使用另一个函数局部变量function faa() {    var date = [1,2,3,4];    function fbb() {        console.log(date)    }    fbb();}faa();
//通过闭包,可以提升函数内部的局部变量function faa() {    var data = '获取到的数据';    function fbb() {        return data    }    fbb();}var a = faa();console

 

二、循环绑定

    
/*你在页面点击li标签,会弹出5,上面全部都是弹出5 为什么会这样,就是循环绑定出现的变量污染,var是ES5中定义变量的方法,是没有块级作用域的,当for循环结束时,i就等于5*/ //我们可以通过闭包函数去解决这个问题
 /*我们将为为li标签绑定点击事件的方法,写出一个闭包函数,外函数就是一个匿名函数的自调用。循环一次,先是匿名函数自调用一次,产生一个局部空间存放函数体代码,这样循坏5次,就产生了五个不同局部空间的 函数,当触发点击事件,就去执行相对应的回调函数,所引弹出的是它对应的索引值*/ //我们可以通过对象的属性去解决变量污染问题
//前面说了var定义的变量是无块级作用域的,我们可以通过ES6的语法,let去解决变量污染问题
let lis = document.querySelectorAll('li');   for (let i = 0 ; i < lis.length;i++) {     lis[i].onclick = function () {       alert(i);     }   }  

 

三、面向对象Js

 

四、定时器

//setInterval(持续性定时器)//setInterval(函数, 毫秒数, 函数所需参数(可以省略));var timer = setInterval(function() {console.log("呵呵");}, 1000)//setTimeout(一次性定时器)//setTimeout(函数, 毫秒数, 函数所需参数(可以省略));setTimeout(function (data) {console.log(data);}, 1000, "数据"); //清除定时器 clearTimerout()|clearInterval()

 

  

转载于:https://www.cnblogs.com/zhuchunyu/p/9832429.html

你可能感兴趣的文章
双亲委派模型与Tomcat类加载架构
查看>>
Highcharts tooltip显示数量和百分比
查看>>
小程序兼容iphoneX(齐刘海)代码,mpvue的写法
查看>>
小米设备怎么不ROOT激活Xposed框架的步骤
查看>>
Vue Router
查看>>
你所听到的技术原理、技术本质到底是什么?
查看>>
决战燕京城-10 前往天寿山
查看>>
WebMvcTest与SpringBootTest
查看>>
面试官:你接受免费加班吗?程序员这样怼回去,网友:老铁没毛病
查看>>
分享我的个人项目:Wildfire 野火评论系统
查看>>
【机器视觉与图像处理】基于MATLAB的角度计算
查看>>
一篇很全面的IOS面试题(下)
查看>>
极简.高性能.分布式框架,可运行于多种环境(apache/php-fpm,swoole)
查看>>
DESTOON7.0农产品B2B供应求购交易平台源码
查看>>
node js 批量处理pdf,提取关键信息,并导出excel
查看>>
05 Objective C数组的四种遍历方法总结
查看>>
少侠请重新来过 - Vue学习笔记(五) - 指令
查看>>
重学前端(六)-JavaScript中的class
查看>>
技术并非一切,做做 Side Project 吧
查看>>
ViewPager+seekBar的联动效果
查看>>