首页 > 语言 > JavaScript > 正文

javascript中Function类型详解

2024-05-06 16:18:55
字体:
来源:转载
供稿:网友

这篇文章主要介绍了javascript中Function类型详解的相关资料,需要的朋友可以参考下

Function 类型

function类型,毋庸置疑是js中相当重要的一个玩意。

1.这玩意首先是一个对象,也就是说它是一个引用类型。陈述:一听说是对象,是不是很有一种它的基类是object对象错觉感,No,

它和object是独立的2个东西。当你typeof function 时,返回的是 funciton 并非 object

2.每个函数都是 Function 对象的一个实例,它与其他引用对象一样具有属性和方法。由于它是对象所以函数名是指向函数对象的指针

关于函数的声明的语法支持:

 

 
  1. <script> 
  2.  
  3. //方式1 
  4. function fun(num1,num2){ 
  5. return num1+num2; 
  6.  
  7. //方式2 
  8. var fun=function(num1,num2){ 
  9. return num1+num2; 
  10. }; 
  11.  
  12. //方式3 
  13. var fun=new Function("n1","n2","return n1+n2"); 
  14.  
  15. </script> 

讲解:3种方式都能完成一个函数的声明,但各有不同。

方式1 理解为 一个函数的声明,方式2,方式3理解为函数表达式。(方式3不推荐使用,原因会导致解析2次代码,先解释常规ECMAScript代码,在解释传入的参数,这种

写法,参数可以是N个,但是最后一个参数视为函数主体)

为什么说不同,主要在于,js解析器对函数声明 和 函数表达式 解析的不同。解析器会优先读取函数申明,js引擎在执行时会将函数声明自动放到执行环境的最顶端。

而函数表达式则不同,当执行到函数表达式时,才会真正去被解释执行。关于这点理解很重要!

看代码

 

 
  1. <script> 
  2. console.log(typeof fun); //"function" 
  3. console.log(typeof fun2); //"undefined" 
  4. console.log(typeof fun3); //"undefined" 
  5. function fun(n1,n2){ 
  6. return n1+n2; 
  7. var fun2=function(n1,n2){ 
  8. return n1+n2; 
  9. var fun3=new Function("n1","n2","return n1+n2;"); 
  10. </script> 

3.为什么函数没有重载?

这个问题要从js的语言特性来考虑。在第2条已经说了,函数名称只是指向函数对象的一个指针。根据指针的概念去理解就清楚了。

看代码示例:

 

 
  1. <script> 
  2. function fun(n1){ 
  3. return n1+100; 
  4. function fun(n1){ 
  5. return n1+200; 
  6. console.log(fun(1));// 201  
  7.  
  8. //以上写法在解析后应为 
  9.  
  10. var fun=function(n1){ 
  11. return n1+100; 
  12. fun=function(n1){ 
  13. return n1+200; 
  14.  
  15. // fun 的引用被覆盖了 
  16. console.log(fun(1));// 201  
  17. </script> 

今天就写到这,都是写基本概念,希望对这块有盲点的起到帮助!有什么需要指正的地方,希望各位霸气留言指正。

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选