关于函数的理解

关于函数的理解

函数的参数都是按值传递。也就是说实参只是把值给到函数的形参,并不是将自身引用给他,只是将值复制给他。

向参数传递引用类型的值时(多个值构成的对象或者数组),会把这个值在内存的地址复制给一个局部变量,双方同时指向一个对象内存(引用类型值并不是持有这个值,而是指向这个值),所以这个局部变量在函数内的变化会反应到函数外部。
当这个函数内部的局部变量,重新赋予或指向别的值时。他将不再与函数外部的值相关联,他的改动也不会影响到外部值
``

在这里插入图片描述

匿名函数

匿名函数语法:(function (){})() 单独运行调用函数时需要给函数体加一个括号:(function (){})()。
如果有赋值或者调用则可以省略括号:let a = function(){}()。匿名函数尾部加上括号()用于传入参数值,并且自调用,没有参数或者不想自调用的话可以不加括号。
匿名函数具有全局性,因此this对象经常指向window

箭头函数

箭头函数相当于匿名函数并且简化了函数体,表达式:(()=>{})();
箭头函数不能使用arguments和super和new.target,也不能用作构造函数,此外箭头函数也没有prototype属性 箭头函数不能被提升,需要在使用前定义

回调函数

在一个函数中调用另外一个函数就是callback 顾名思义,回调函数作为主函数的参数运行。(主要用于异步)
很多时候 callback 都是用来执行事件驱动的任务 比如有货了通知我 | 你到家了再叫我做饭 等等之类的 )
简单来说=> 函数A(函数B) 当达到函数A条件的时候,函数B会执行。只要执行了函数A 函数B就会自动执行(什么时候执行取决于函数A)。在函数B执行的过程中,可以异步做其他事情,这也就是回调函数的作用。

构造函数

构造一个拥有很多属性,用于创建对象的函数。
通过new关键字调用并且创建一个基于此函数的对象。
构造函数可以把某种对象(如用户对象)的创建过程封装起来,让之后每次对象的创建都变得极其简单。
可以在函数中书写任何代码,用于创建对象时要做的事情。
构造函数中 this 关键字没有任何的值(指向windows)
this 的值在函数调用实例化对象(new object)时创建(指向new调用它的那个对象) (语法:let 新对象 = new 构造函数)

arguments

arguments表示传入的参数组合。是一个类数组对象(不是Array的实例),就是像数组一样[],但又不是数组。
可以用arguments[x]来访问函数其中的参数。事实上形参只是为了方便才写出来,并不是必须的,可以直接用arguments[x]来使用传进来的参数。

this

this 是 JavaScript 语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,随着函数使用场合的不同,this 的值会发生变化。但是有一个总的原则,那就是this指的是,调用该函数的那个对象。

call(),apply()

call()和apply(),语法:A.方法.call(B,XXX)以及A.call(B,XXX) 将A里面的指定方法放到B里面使用,this指向B。
第一个参数可以为null。表示this默认指向(自己),自调用。
apply、call 方法都会使函数立即执行,因此它们也可以用来调用函数。bind方法和apply,call类似,只不过他不会使函数立即执行,他返回整个函数。而apply和call返回函数的结果

闭包

闭包:函数a内部定义了函数b,内部函数b可以引用函数a的参数和局部变量,当函数a返回函数b时,相关的参数和变量都储存在函数b中,这种称之为闭包,简单来说就是携带状态(函数a的参数和变量)的函数。
这样一来,在外部只要调用函数a就会返回函数b,而函数b又携带了函数a的变量和参数,这样就实现了在函数外部访问到函数内部。
闭包的作用一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
正常来说函数外部无法读取到函数内部的变量,我们可以在函数内部再定义一个内部函数并把它作为外部函数返回值,当我们调用外部函数时,就返回了内部函数。而此时内部函数储存着外部函数的变量值,所以我们就可以在外部得到函数里面的值了。
注意:不要随便改变外部函数的变量。
正常来说,函数执行完后,局部变量会被销毁,但是由于外部函数里面还存在一个内部函数,此时外部函数的变量对于内部函数来说充当全局变量的角色,但是外部函数的变量对于内部函数来说是私有的,只能为他所用,所以变量会被保存在内存中,以便给内部函数使用,所以不会销毁。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值