当前位置:首页 > 手机软件 > 手机软件百科 > 正文内容

function函数

wenjunwen3个月前 (10-24)手机软件百科63

   我们知道,在js中,函数实际上是一个对象,每个函数都是function函数类型的实例,并且都与其他引用类型一样具有属性和方法。因此,函数名实际上是指向函数对象的指针,不与某个函数绑定。在常见的两种定义方式(见下文)之外,还有一种定义的方式能更直观的体现出这个概念:

  var sum = new Function("num1", "num2", "return num1 + num2"); //不推荐

  Function的构造函数可以接收任意数量的参数,但最后一个参数始终被看做函数体。这种方式有个缺点是,会导致解析两次代码,第一次是基础的ES代码解析,第二次是解析传入构造函数中的字符串,这样会导致性能的下降,在此写出是帮助理解js中函数其实是对象这个概念。

  (一)js函数没有重载的概念

  说到重载的概念,我们来类比Java中的重载是怎么实现的:在Java中,方法是通过方法签名来唯一标识一个方法。方法签名包括:方法名、参数数量、参数顺序和参数类型这几个要素。因此两个方法的方法名相同,而其他签名要素不同,编译器就会认为是两个不同方法,从而可以存在同名的不同方法,以实现重载的概念。(引用:怎么深入理解js中为什么没有重载呢--segmentfault 中manxisuo的回答)。

  而上面我们说过,js中的函数名实际上是指向函数对象的指针,因此函数名可以说是一个函数的唯一标识,跟参数列表并没有关系,因此并不会出现同名的两个函数(因为一个指针同时只能指向一个对象)从而不存在重载的概念。

function函数

  这样就很明显可以看出,上面一行将sum指向function(num1,num2),而接下来又将sum指向function(num1, num2, num3),从而造成第二次的指向覆盖了第一次的,因此更明显的看出js中并没有重载的概念。

  (二)函数声明和函数表达式的区别

  我们知道,常用的定义函数方法有两个:函数声明和函数表达式。

  函数声明,可以说是最常见的定义方法,如下例:

function函数

  这两段代码看起来差别不大,只是函数定义的方式不同而已。但事实是,第一段可以正常运行而第二段则会报错。这是因为,在代码开始执行之前,解析器就已经通过一个名为函数声明提升的过程,读取并将函数声明添加到执行环境中。简单来说,解析器会先将函数声明放在源代码树的顶部。而下面那段代码,函数位于一个初始化语句中(并不会将其提升到顶部),简单来说,在执行到这个赋值语句之前,sum并未指向任何一个函数,因此在之前调用函数则会报错。

  以上所述是给大家介绍的JS中function函数的理解,希望对大家有所帮助.

标签: [db:标签]

相关文章

微信语音怎么保存到电脑 微信语音文件导出备份保存方法【详解】

  微信现在拥有着好几亿的用户,而且用它的人也越来越多,尤其是它的语音功能尤其被大家所追捧,现在很多朋友都在寻找微信语音的保存分方法,比如跟女神的聊天记录啊,这些都是一些宝贵的记忆!如果不及时备份保...

微信怎样发语音照片 微信发语音照片方法【详解】

  我们每天都在用微信发语音,发照片,但语音照片你知道吗?没想到微信还有这个功能,今天老司机就来教你如何发语音照片,赶快学起来。  具体操作  第一步. 打开微信,点击“我”...

怎么把微信调成听筒模式 把微信调成听筒模式方法【详解】

  微信可以说是目前最火的手机通信社交应用。很多玩微信的朋友都会借助其强大的语音功能,对方发来的语音一般是以扬声模式发出的,这样尽管可以很方面的收听。但也会造成一定的不便,比如扬声器收听容易被附近的...

微信昵称空白怎么设置 微信昵称空白的设置方法【教程】

  在跟 微信好友 聊天时,一些好友会设置空白的昵称,看起来就是没有昵称,那 微信 昵称空白怎么设置?一起来看看吧~  微信昵称空白怎么设置?  微信不支持设置昵称空白,当不输入文字或输入空白文字时...

微信头像怎么带戴圣诞帽 微信小程序制作圣诞帽头像的教程【详解】

  看到朋友圈中很多人的头像都有圣诞帽,自己也想弄一顶,该怎么办呢?下面我们就来看看详细的教程。  1、打开手机的软件,切换到发现--搜一搜的目录下面,然后搜索你的圣诞帽。  2、在搜索方框里面输入...

微信白名单在哪里设置 微信白名单的设置方法【详解】

  当我们将手机调成静音或者免打扰模式的时候,通讯录白名单的用户将不受这些系统限制。那微信白名单在哪里设置?  微信白名单在哪里设置?  微信没有白名单功能,只有黑名单功能,你可以在资料设置中将对方...