精华内容
下载资源
问答
  • 在项目开发过程中,人抓狂之一的问题就是一个点击事件,当快速点击的时候,它会重复发送多个请求。这是不允许出现的。但是怎么解决这个问题呢?一般处理方法,就是点击的时候,立刻将该按钮disabled,这样就可以...

    在项目开发过程中,让人抓狂之一的问题就是一个点击事件,当快速点击的时候,它会重复发送多个请求。这是不允许出现的。

    但是怎么解决这个问题呢?

    一般处理方法,就是点击的时候,立刻将该按钮disabled,这样就可以避免重复发送请求了。但是我发现这个有一个弊端,那就是:

    前端精品教程:百度网盘下载

    如果,该事件有许多的验证,比如电话、邮箱格式是否正确呀,必填的是否填了呀等等。一旦你点击就把按钮disabled了,发现该填的没填,回去填完后发现按钮不能点了?那是因为刚才点击的时候被你disabled了,所以还得在验证的方法中取消按钮的disable。就造成了你点击的时候,第一步,将按钮disable了,然后一步一步向下验证,如果验证出错,得取消disable,当所有验证通过了,在请求的回调函数中,成功了也要取消disable,失败了也要取消disable,因为失败了用户多半还会继续点两次,不取消disable会让用户发现怎么点不了了。这就造成了全篇都是按钮disable的设置与取消。一旦有修改,很难维护的。

    在vue中,有一个lodash,我们只需引入就可以使用了。比如以下代码:

    前端精品教程:百度网盘下载

    我们首先将发送请求的ajax方法写在一个函数里面,在这里就是sendAjax函数,其次,我们引入lodash,然后将sendAjax这个函数用一个方法自定义一下,在这里就是doPostAction,其中_是我们引入的lodash,_.debounce是一个限制操作频率的函数,里面的是500是毫秒单位。

    当执行点击事件的时候,也就是postAction函数,我们只需要调用doPostAction这个函数就可以了,而那个500的功能就是你在这个时间段里,无论执行了多少次这个点击事件,它都只会执行一次。

    前端精品教程:百度网盘下载

    这样就少了我们通篇disable来disable去

    最后附上官网例子:

    展开全文
  • 可以把函数看做一个工具,可以直接拿来用的东西,避免了重复性的工作。 一个简单的函数: 为什么要用函数 将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动。 简化...

    函数是什么

    把一些代码语句进行封装,通过调用的方式来使用,执行里面的语句。可以把函数看做一个工具,可以直接拿来用的东西,避免了重复性的工作。

    一个简单的函数:

    为什么要用函数

    • 将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动。

    • 简化编程,让编程模块化。

    • 大量的功能都需要封装实现,函数是必须的。

    函数怎么用

    函数声明与函数表达式

    函数声明举例:

    • 函数的形参:a,b

    • 函数的实参:1,2

    • 注意:实际参数和形式参数的个数,要相同。

    • return的作用是结束方法。该函数会在return语句之后停止并立即退出.

     

    函数表达式举例:

     

    两则的区别:

    • 函数声明会率先读取,函数调用可以放在前后都可以。

    • 函数表达式必须要等到执行到它所在的代码行,才会被解释调用,因此调用必须放在表达式后面。

     

    预编译

    四部曲,预编译可以解决函数执行问题

    • 创建AO对象

    • 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined

    • 将实参值和形参值统一

    • 在函数体里找函数声明,值赋予函数体

     

    this

    this指的是,调用函数的那个对象。this永远指向函数运行时所在的对象。

    解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this。

    根据函数的调用方式的不同,this会指向不同的对象:【重要】

    • 1.以函数的形式调用时,this永远都是window。比如fun();相当于window.fun();

    • 2.以方法的形式调用时,this是调用方法的那个对象

    • 3.以构造函数的形式调用时,this是新创建的那个对象

    • 4.使用call和apply调用时,this是指定的那个对象

    需要特别提醒的是:this的指向在函数定义时无法确认,只有函数执行时才能确定。

     

    伪数组arguments

     

    • 命名的参数只是提供便利,但不是必须得,arguments对象可以和命名参数一起使用。

    • arguments代表的是实参。有个讲究的地方是:arguments只在函数中使用。

    • arguments的值永远与对应命名参数的值保持同步。

    • arguments对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。

    • 没有传递值的命名参数将自动被赋予undefined值。

    • 返回正在执行的函数:arguments.callee。在使用函数递归调用时,推荐使用arguments.callee代替函数名本身。

    • arguments是伪数组,是因为:arguments可以修改元素,但不能改变数组的长短。

    重载

    重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

    • ECMAScript没有重载,由于不存在函数签名

    • ECMAScript如果定义了两个名字相同的函数,则该名字只属于后定义的函数。

    • 模仿重载:可以通过检查传入函数中的参数数量和类型并实现不同功能

    函数的属性和方法

    每个函数都包含两个属性:

    • length: 表示希望接收命名参数的个数

    • prototype: 非常重要的,很多方法都保存在prototype名下

    每个函数包含两个非继承的方法:

    • apply(): 接收两个参数,一个是在其中运行函数的作用域,二是参数数组(可以是Array实例,也可以是arguments)

     

    • call(): 第一个参数是this没有变化,变化的是其余参数直接传递给函数。

     

    两个方法的用途都是在特定的非作用域中调用函数,实际上等于设置了函数体内this对象的值。

    他们两个的区别就在于接收参数的方式不同。

    ps: 具体怎么选择需要考虑传入的参数,怎么方便怎么来

     

    此外两个方法真正强大在于可以扩充函数赖以运行的作用域,对象不需要与方法有任何耦合关系。

    此外es5还定义了一个bind( )方法,创建一个函数的实例,其this指向会被绑定传给bind( )函数的值。

    展开全文
  • 奇妙的JavaScript函数

    2018-12-25 09:56:39
    一、概述 ...这在很多其他编程语言中是一件非常不可理解的事情,函数是一段可以重复执行的代码块,为代码复用而生,它怎么能成一个对象呢?这一点我们无从解释,JavaScript中就是这样做的。我们...

    一、概述

    不得不说JavaScript是一门让人又爱又恨的语言,她的语法设计中有多少让人爱不释手的,就有多少让人无语抓狂的。今天咱们就来看看JavaScript函数中的奇葩语法。

    二、函数也是对象

    啥?函数也是对象?这在很多其他编程语言中是一件非常不可理解的事情,函数是一段可以重复执行的代码块,为代码复用而生,它怎么能成一个对象呢?这一点我们无从解释,JavaScript中就是这样做的。我们来看几个证据:

    1.证据1:函数是引用类型

    //声明一个函数

    var funRef = function(){};

     

    //将函数的引用赋值给另一个变量

    var otherRef = funRef;

     

    //通过原来的引用给函数对象添加一个属性

    funRef.newProperty = "NewValue";

     

    //通过新的引用访问新添加的属性

    console.log(otherRef.newProperty);

     

    结果是能够得到NewValue这个值的,原因很简单,这两个引用指向的是同一块内存空间。

    2.证据2:函数对象也是由构造器函数创建的

    在JavaScript中任何一个对象都有constructor属性,指向创建这个对象的构造器函数,这里就不举例了。那么函数对象有没有创建它的构造器函数呢?有!

    function sum(a,b){

       return a+b;

    }

     

    console.log('函数对象sum的构造器函数是:'+sum.constructor);

     

    执行结果:

    函数对象sum的构造器函数是:function Function() { [native code] }

    和普通对象一样,函数对象也是构造器创建的呀!所以人家当然是对象!

     

     

    本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

    展开全文
  • 首先我们知道:浅拷贝之后两个对象(P1,P2)指向同一个堆区地址;当P1执行析构函数时,释放掉了该堆区地址的内容。当P2执行析构函数时,也会释放掉该堆区地址的内容,但此时堆区的内容已经释放完了。就会报错了 ...

    首先我们知道:浅拷贝之后两个对象(P1,P2)指向同一个堆区地址;当P1执行析构函数时,释放掉了该堆区地址的内容。当P2执行析构函数时,也会释放掉该堆区地址的内容,但此时堆区的内容已经释放完了。就会报错了
    黑马程序猿C++公开课节选

    解决办法

    让P2拷贝时,指向新的堆区地址即可,即深度拷贝
    黑马程序猿C++公开课节选

    黑马程序猿C++公开课节选

    展开全文
  • 比如我在一个矩形的spriteA上绑定一个<code>click事件,当满足触发条件的时候,触发事件回调 FuncA 。本质上是在<code><canvas>这个tag上绑定了一个'click' 事件,然后回调函数里面...
  • 你必须知道的495C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    4.10 我有一个函数externintf(int*);,它接受指向int型的指针。我怎样用引用方式传入一个常数?调用f(&5);似乎不行。 4.11 C语言可以“按引用传参”吗? 其他指针问题 4.12 我看到了用指针调用函数的不同语法...
  • 另外 <code>useEffect</code> 还可以返回一个函数,功能类似于 <code>componentWillUnmount</code> <pre><code>js function Counter() { const [count, setCount] = React.useState(0) React....
  • 《你必须知道的495C语言问题》

    热门讨论 2010-03-20 16:41:18
    4.10 我有一个函数extern intf(int *); ,它接受指向int型的指针。我怎样用引用方式传入一个常数?调用f(&5);似乎不行。 49  4.11 C语言可以“按引用传参”吗? 50 其他指针问题 50 4.12 我看到了用指针调用...
  • 4.10 我有一个函数extern intf(int *); ,它接受指向int型的指针。我怎样用引用方式传入一个常数?调用f(&5);似乎不行。 49  4.11 C语言可以“按引用传参”吗? 50 其他指针问题 50 4.12 我看到了用指针调用...
  • 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...
  • 通过传入 useState 参数后返回一个带有默认状态和改变状态函数的数组。通过传入新状态给函数来改变原本的状态值。值得注意的是 useState 不帮助你处理状态,相较于 setState 非覆盖式更新状态,useState...
  • -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...
  • Javascript特效之模拟抽奖程序我们经常会看到一些抽奖程序,应该很多都是H5做的,今天我们来...再写一个setInterval重复执行函数文本框一直随机显示我们预设的内容。点击停止时则清除setInterval即可。js代码:...
  • 2.2.4 int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。 2.2.5 写一个程序, 要求...
  • 深入浅出 Koa2 原理

    2021-01-08 14:31:50
    <div><h1>深入浅出 Koa2 说在前面的话:...把一个普通函数push到中间件里,执行这个中间件,返回promise,,不要问我为啥返回promise,快去上一篇文章好好学习。...
  • 这个时候开发一个网页也很容易,主要就是通过 JSP、PHP 等技术写一些动态模板,然后通过 Web Server 将模板解析成一个个 HTML 文件,浏览器只负责渲染这些 HTML 文件。这个阶段还没有前后端的分工...
  • java 面试题 总结

    2009-09-16 08:45:34
    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...
  • 已知rand7(),求rand10().

    2013-04-08 22:41:25
    已知有rand7()的函数,返回1到7随机自然数,利用这rand7()构造rand10() 随机1~10。 //根据排列组合,连续算两次rand7出现的组合数是7*7=49,这49种组合每种出现考虑是相同的。 //怎么从49平均概率的转换为...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

怎么让一个函数重复执行