首页
学习
活动
专区
圈层
工具
发布

《JS回调是怎么回事》 | 7月28日微课 文字版

这个问题我竟然一时无法回答,因为简单的说就一句话,当事件完成,或条件达成,或请求返回的时候执行的代码段,就应该算是回调了。当然这是我自己的理解。...基本上这这二种定义,已经可以涵盖大多数情况了。关于回调函数的详细定义,我们不做过多说明,大家理解就好。 那为什么要用回调呢? 1, JS本身是单线程的,就是同时只有一个JS的线程,只有一段JS在执行。...这就是一个回调的小demob了,在这个例子中JS运行的起点, 是第18行,toBack,它接收二个参数,分别一个config对象,和一个匿名函数,这个匿名函数做为toBack的第二个参数传入方法体。...传入toBack之后它的形参是callback,那么在ajax的success方法中,先进行了一个开关判断,然后把请求成功之后返回的data,做为参数,传入callback,也就是传回了当初传入toBack...毕竟它是一个相对简单的技术点,大家先明白怎么用,为什么也就可以了。有兴趣的同学可以自己在网上查阅相关资料,有什么不懂的地方,可以留言给我。我有时间就会回复。 谢谢大家

1.3K100

求职 | 史上最全的web前端面试题汇总及答案2

在onsubmit事件中返回false 9、如何动态操作表格?...通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。...代码如下: 31、this对象的理解 ①this总是指向函数的直接调用者(而非间接调用者); ②如果有new关键字,this指向new出来的那个对象; ③在事件中,this指向触发这个事件的对象,特殊的是...没有用到,但我知道html的websockets、flash的socket、ajax长轮询等都可以实现。 8、你在AJAX中有遇到乱码吗?如果遇到,你是如何解决的? ①遇到过。...③对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样? ④加班的看法? ⑤有没有女朋友

8.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    献给前端求职路上的你们(下)

    console.log(x+y+(++num)); } } aa函数中的bb函数就是闭包了,bb函数可以使用aa函数的局部变量,参数,最典型的闭包应该是下面这样,将定义在函数中的函数作为返回值...作为方法调用,那么this就是指这个对象 事件是?IE与火狐的事件机制有什么区别? 如何阻止冒泡? 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。...JavaScript的作用域指的是变量的作用范围,内部作用域由函数的形参,实参,局部变量,函数构成,内部作用域和外部的作用域一层层的链接起来形成作用域链,当在在函数内部要访问一个变量的时候,首先查找自己的内部作用域有没有这个变量...//undeifned var num=2; console.log(num); //2} aa(); 为什么在aa函数中会出现上述结果呢,这就是JavaScript的变量提升了,虽然变量num...的定义在后面,不过浏览器在解析的时候,会把变量的定义放到最前面,上面的aa函数相当于 function aa(){ var num; console.log(num); //undefined

    1.4K60

    C语言: 定义一个函数int fun(int n),用来计算整数的阶乘,在主函数中输入一个变量x,调用fun(x)输出x及以下的阶乘值。

    最近太忙了,我就不分析代码了,有问题留言,或者私我QQ2835809579 希望对你有帮助,我是计算机学长川川,点个赞加个关吧。...原题: 定义一个函数int fun(int n),用来计算整数的阶乘,在主函数中输入一个变量x,调用fun(x)输出x及以下的阶乘值。 输入输出示例 输入:5 输出: 1!=1 2!=2 3!...main(int argc, char const *argv[]) //主函数 { int n; printf("Input n:"); //变量定义...=%d\n",n, fun(n)); //调用函数计算阶乘 return 0; } int fun(int n) //定义计算n!...的函数 { int fact = 1; for (int i = 1; i <= n; ++i) //遍历1到n { fact = fact*i; }

    8K20

    JS 面试题 大全

    13、DOM事件流和事件委托? 14、ajax是什么?以及如何去创建它? 15、什么是跨域?jsonp的原理?以及怎么实现?...22、请解释一下变量声明提升? 23、请指出document.onload和document.ready两个事件的区别? 24、请解释JSONP的工作原理,以及它为什么不是真正的AJAX?...***Es5中的继承有: ①.原型继承:父类的实例作为子类的原型 ②.借用构造函数继承:在子类中适用call方法,调用父类的方法,并将父类的this改为子类的this ③.组合继承:既可以调用父类实例的属性又能调用父类原型的属性...ES6有class继承: ①.class就相当于Es5中的构造函数 ②.class中定义的方法签后不能加function ,全部定义在class的prototype属性中 ③.class只能定义方法...,不能定义定义对象变量等 ④.class默认为严格模式 ⑤.在子类中,调用extends方法,可以调用父类的属性,用eat调用父类的方法 ---- 29、JS 中的主要有哪几类错误?

    2K30

    JavaScript 逆向爬虫中的浏览器调试常见技巧

    所以对应的事件处理函数是定义在 chunk-vendors.77daf991.js 这个文件的第 7 行。...在调试代码的时候,我们可以在需要的位置上打断点,当对应事件触发时,浏览器就会自动停在断点的位置等待调试,此时我们可以选择单步调试,在面板中观察调用栈、变量值,以更好地追踪对应位置的执行逻辑。...但其实针对这个例子,通过翻页的点击事件 Listener 是不太容易找到突破口的。 接下来我们再介绍一个方法—— Ajax 断点,它可以在发生 Ajax 请求的时候触发断点。...调试到某处,想要加一行 console.log 输出一些内容,以便观察某个变量或方法在页面加载过程中的调用情况。在某些情况下,这种方法比打断点调试更方便。...这里我选定了一个我任意新建的文件夹 ChromeOverrides,注意,这时候可能会遇到如图所示的提示,如果没有问题,直接点击“允许”即可。

    3.1K51

    50道JavaScript基础面试题(附答案)

    可以参考我的另一篇文章JavaScript实现类与继承的方法(全面整理) 9 Javascript作用链域 作用域链的原理和原型链很类似,如果这个变量在自己的作用域中没有,那么它会寻找父级的,直到最顶层...10 谈谈this的理解 1) this总是指向函数的直接调用者(而非间接调用者) 2) 如果有new关键字,this指向new出来的那个对象 3) 在事件中,this指向目标元素,特殊的是IE的attachEvent...闭包指的是一个函数可以访问另一个函数作用域中变量。常见的构造方法,是在一个函数内部定义另外一个函数。内部函数可以引用外层的变量;外层变量不会被垃圾回收机制回收。...AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。 区别: 1) 对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。...1) 标记清除: 这个算法把“对象是否不再需要”简化定义为“对象是否可以获得”。 这个算法假定设置一个叫做根(root)的对象(在Javascript里,根是全局对象)。

    14.4K01

    加点JavaScript魔法

    不幸的是,在阅读完这些信息之后,我的疑惑更多了,因为这个组件看起来并没有按照我需要的方式工作。以下是我实现此功能需要解决的问题列表: 在页面中会有很多用户名链接,每条用户动态都会显示一个。...我将timer对象存储在hover()调用之外定义的timer变量中,以使timer对象也可以被“mouse out”处理程序访问。我需要这么做的原因是为了获得良好的用户体验。...所以我的鼠标移出事件处理程序检查是否有一个活动的timer对象,如果有,就取消它 07 Ajax 请求 Ajax请求不是一个新话题了,因为我已经在第十四章中已介绍过这个主题,来作为实时语言翻译功能。...我在外部范围中定义了一个新变量xhr。...这个变量将保存我通过调用$.ajax()来初始化的异步请求对象。

    5.7K10

    ajax使用案例

    谷歌有个格式化的插件,也可以用网上的格式化一下方便阅读; 复制过来格式化一下:这就是一个json文件 然后可以复制过来,方便自己调用时查看: 将1处的接口2放到ajax的url里面进行调用,在ajax...后面需要对服务器给我们返回的数据进行操作,那么我们就取4中的数据用变量的形式放到ajax创建的html标签中。这样前端访问到这个页面时就要从后端获取来的数据进行渲染的网页了。...注意这里,在反引号里面需要{变量}引用,在外面似乎是不需要的,这里在外面是加了{}报错语法问题。在反引号外面这个变量不加{}才是对的。//疑问,{}引用变量只是反引号中引的吗?...这个api下面的4, 请求获得的数据是全部的: api中的sub_category=0中的这个0是需要拼接的。那么要在全局var定义一个sub_category,让它默认是0,就是显示下面的全部。...}这个值 写点击事件,就是在函数作用域里获取点击对象的id,然后将id赋值给sub_category变量,这样请求的url即改变了。

    12.3K20

    vue2知识点:箭头函数和普通函数的this指向问题

    主要区别普通函数:(谁调用我,我的this就指向谁)箭头函数:(箭头函数没有自己的this, 它的this是继承而来, 它会捕获其所在(即定义的位置)上下文的this值, 作为自己的this值;或者说默认指向在定义它时所处的对象...详细说明注意点1:不被vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数=》JS引擎帮忙调用)那么请使用箭头函数,因为箭头函数中this指代vm或者vc。...默认情况下,没有直接的调用者,this的指向为window),这样this的指向才是vm 或 组件实例对象。...举例普通函数情况在全局函数中,普通函数中this =》window当普通函数被作为某个对象的方法调用时,this就等于那个对象计算属性computed和监视属性watch情况1....举例说明就是,你要使用\$on去触发自定义事件,你先定义一个变量存储当前组件的vm和vc,然后你在\$on的配置项的函数中直接用定义好的那个this变量去设置值,不要在配置项中的函数中用this,因为你不知道局部方法中这个

    72400

    读Zepto源码之Ajax模块

    如果 global 为 true ,则将 $.active 的数量减少 1。如果 $.active 的数量减少至 0,即没有在执行中的 ajax 请求时,触发全局的 ajaxStop 事件。...在触发 ajaxComplete 事件前,调用配置中的 complete 方法,将 xhr 实例和当前的状态 state 作为回调函数的参数。...在触发 ajaxSuccess 事件前,先调用配置中的 success 方法,将 ajax 返回的数据 data 和当前状态 status 及 xhr 作为回调函数的参数。...在触发事件前,调用配置中的 error 方法,将 xhr 实例,错误类型 type 和 error 对象作为回调函数的参数。...,Ajax 模块定义了一些便捷的调用方法,这些调用方法不需要传递 option,某些必填值已经采用了默认传递的方式,这些方法中有些参数是可以不需要传递的,这个方法就是来用判读那些参数有传递,那些没有传递

    4.1K00

    医疗数字阅片-医学影像-Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。_.throttle(func, , [option

    func 会传入最后一次传入的参数给这个函数。 随后调用的函数返回是最后一次 func 调用的结果。...当我们给 DOM 绑定事件的时候,加了防抖和节流的函数变得特别有用。为什么呢?因为我们在事件和函数执行之间加了一个控制层。记住,我们是无法控制 DOM 事件触发频率的。...看下滚动事件的例子: 当使用触控板,滚动滚轮,或者拖拽滚动条的时候,一秒可以轻松触发30次事件。经我的测试,在智能手机上,慢慢滚动一下,一秒可以触发事件100次之多。...假想一下,你在电梯中,门快要关了,突然有人准备上来。电梯并没有改变楼层,而是再次打开梯门。电梯延迟了改变楼层的功能,但是优化了资源。...基于 AJAX 请求的自动完成功能,通过 keypress 触发 为什么用户还在输入的时候,每隔50ms就向服务器发送一次 AJAX 请求?

    3.1K20

    174道JavaScript 面试知识点总结(上)

    已在作用域中声明但还没有赋值的变量,是 undefined 的。相反,还没有在作用域中声明过的变量,是 undeclared 的。...undefined 代表的含义是未定义,null 代表的含义是空对象。一般变量声明了但还没有定义的时候会返回 undefined,null 主要用于赋值给一些可能会返回对象的变量,作为初始化。...(2)第二种方式是使用借用构造函数的方式,这种方式是通过在子类型的函数中调用超类型的构造函数来实现的,这一种方法解决了不能向超类型传递参数的缺点,但是它存在的一个问题就是无法实现函数方法的复用,并且超类型原型定义的方法子类型也没有办法访问到...this 是执行上下文中的一个属性,它指向最后一次调用这个方法的对象。在实际开发中,this 的指向可以通过四种调用模 式来判断。...详细资料可以参考:《前端常见跨域解决方案(全)》《浏览器同源政策及其规避方法》《跨域,你需要知道的全在这里》《为什么 form 表单提交没有跨域问题,但 ajax 提交有跨域问题?》

    1.8K41

    一天梳理React面试高频知识点

    如果没有key,Rεat就不知道列表中虚拟DOM元素与页面中的哪个元素相对应。所以在创建列表的时候,不要忽略key。为什么 React 要用 JSX?...在哪个生命周期中你会发出Ajax请求?为什么?Ajax请求应该写在组件创建期的第五个阶段,即 componentDidMount生命周期方法中。原因如下。在创建期的其他阶段,组件尚未渲染完成。...对于 componentWillMount 这个生命周期函数的调用次数会变得不确定,React 可能会多次频繁调用 componentWillMount。...在编译的时候,把它转化成一个 React. createElement调用方法。非嵌套关系组件的通信方式?即没有任何包含关系的组件,包括兄弟组件以及不在同一个父级中的非兄弟组件。...可以使用自定义事件通信(发布订阅模式)可以通过redux等进行全局状态管理如果是兄弟组件通信,可以找到这两个兄弟节点共同的父节点, 结合父子间通信方式进行通信。描述事件在 React中的处理方式。

    3.7K20

    javascript异步中的回调

    没错这就是我们今天要说的---回调 js回调函数 如你所知,函数是对象,所以可以存储在变量中, 所以函数还有以下身份: 可以作为函数的参数 可以在函数中创建 可以在函数中返回 当一个函数a以一个函数作为参数或者以一个函数作为返回值时...回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。...这一设计允许了底层代码调用在高层定义的子程序。...,并没有数据上的关联,但是实际开发中的情况要比这个复杂, 回调函数参数校验 我们举一个简单的栗子 let girlName = "裘千尺" function hr(callBack...认识一下吧,我喜欢${love}`); } hr(gj) gj作为hr的回调函数,并且hr将自己的一个变量传递给gj,gj在hr的回调中执行, 仔细看这种写法并不严谨, 如果gj

    3.2K40

    js面试题及答案2020_JS面试题大全

    作用域链就是放我们在访问一个变量的时候 当前作用域没有 就会往上一层的作用域访问 直到访问window为值 5、原型和原型链 每个对象都会在其内部初始化一个属性,prototype,这个就是原型...为什么要继承 让一个对象可以访问到另一个对象中的属性和方法 继承的方法比较多我就说两三个把 第一就是通过原型链继承 // 1、通过原型来继承 function Parent() {...this是指向这个实例的 在隐士的状态下是指向他调用者 10、箭头函数和普通函数的区别 箭头函数是没有this的 他的this是指向他上一层函数的 箭头函数没有 arguments 没有原型 箭头函数不能使用...JSONP 资源共享 node代理 nginx 代理 13、null,undefined 的区别 null:是定义一个对象被定义为空 undefined是没有这个值 这个值不存在 14、谈谈你对ES6...为什么 null的话他是返回一个 object ,以为null的低位符为 000 也就是object 所以他返回 object 那么我们定义一个函数 怎么让null返回的是null 我们可以使用

    54120

    当面试官问你闭包时,他究竟想听到些什么?

    “请你讲一下闭包”——这道题几乎是前端面试必问的问题,今天我试着总结一下如何优雅的回答这道题 闭包是什么? 闭包是有权限访问其他函数作用域内的变量的一个函数。...这是《JavaScript高级程序设计》中给出的定义,如果你想就用这一句话就把面试官搞定几乎是不可能的。...因为这句话还存在下面几个深入的问题: ■为什么其他非闭包的函数没有权限访问另一个函数的内部作用域 ■为什么闭包有这个权限 ■什么是函数作用域 面试官更想知道的是你是否知道上面的内容。...那好一个更周全的解释方法应运而生: 由于在JS中,变量的作用域属于函数作用域,在函数执行后作用域就会被清理、内存也随之回收,但是由于闭包是建立在一个函数内部的子函数,由于其可访问上级作用域的原因,即使上级函数执行完...我的回答会是下面的样子: 闭包随处可见,一个Ajax请求的成功回调,一个事件绑定的回调方法,一个setTimeout的延时回调,或者一个函数内部返回另一个匿名函数,这些都是闭包。

    1.1K50

    【愚公系列】2023年03月 其他-Web前端基础面试题(JS_高级_47道)

    闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在外部函数调用后被自动清除。...意外的全局变量 函数中意外的定义了全局变量,每次执行该函数都会生成该变量,且不会随着函数执行结束而释放。...中间件代理跨域 27、谈谈垃圾回收机制方式及内存管理 JavaScript 在定义变量时就完成了内存分配。...在定义的时候继承自外层第一个普通函数的this 被继承的普通函数的this指向改变,箭头函数的this指向会跟着改变 箭头函数外层没有普通函数时,this指向window...为什么它不是真正的Ajax: 它们的实质不同 ajax的核心是通过xmlHttpRequest获取非本页内容 jsonp的核心是动态添加script标签调用服务器提供的js脚本

    76620

    耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案

    两个事件是顺序发生的, 我如果在一个事件中执行发送邮件的过程, 我就不能在这个事件中把中间过程的信息反馈给客户 我的两个需求必须同时进行!...然后进入下一次ajax循环 2.ajax调用服务器端事件,在服务器端事件里使用多线程技术 当用户点按钮触发了ajax服务器端事件后, 在这个事件里我建立了两个线程 一个线程开始发送邮件,另一个线程负责返回信息...因为要实时的返回信息, 所以这个ajax事件肯定是定时调用的....两种方案都是可行的,我最终选择了第二种 想法随好,在实施过程中又碰到了N多问题  三.实施过程中的问题 1.假如在发送过程中用户出现了断网,或者不小心关闭了页面,我怎么让他下次登陆的时候继续发送....,然而new Thread(new ThreadStart());创建线程的又不允许给线程传参数, 这个问题没有困绕我很久,因为网上有很多解决方案,比如建立一些public的变量或者属性 我用的是另外一种办法

    74210

    BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

    可自己给该变量定义slice方法,故有时会失效 方法二.obj instanceof Array 在某些IE版本中不正确 方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray...Ajax是异步JavaScript和XML,用于在Web页面中实现异步数据交互。...声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。...尤其是在Object对象上。(这个我没能答出?希望知道的说一下。)  2)函数声明与函数表达式的区别?...XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。

    1.7K50
    领券