javascript中Function类型详解

 更新时间:2015年04月28日 08:58:42   投稿:hebedich  
这篇文章主要介绍了javascript中Function类型详解的相关资料,需要的朋友可以参考下

Function 类型

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

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

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

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

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

<script>

  //方式1
  function fun(num1,num2){
    return num1+num2;
  }
  
  //方式2
  var fun=function(num1,num2){
    return num1+num2;
  };

  //方式3
  var fun=new Function("n1","n2","return n1+n2");
  
</script>

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

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

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

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

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

看代码

<script>
  console.log(typeof fun); //"function"
  console.log(typeof fun2); //"undefined"
  console.log(typeof fun3); //"undefined"
  function fun(n1,n2){
   return n1+n2;
  }
  var fun2=function(n1,n2){
   return n1+n2;
  }
  var fun3=new Function("n1","n2","return n1+n2;");
 </script>

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

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

  看代码示例:

<script>
  function fun(n1){
   return n1+100;
  }
  function fun(n1){
   return n1+200;
  }
  console.log(fun(1));// 201 
  
  //以上写法在解析后应为
  
  var fun=function(n1){
    return n1+100;
  }
  fun=function(n1){
   return n1+200;
  }
  
  // fun 的引用被覆盖了
  console.log(fun(1));// 201 
 </script>

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

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

相关文章

  • 基于js disabled="false"不起作用的解决办法

    基于js disabled="false"不起作用的解决办法

    本篇文章是对js disabled="false"不起作用的解决办法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 原生js实现密码输入框值的显示隐藏

    原生js实现密码输入框值的显示隐藏

    这篇文章主要为大家详细介绍了原生js实现密码输入框值的显示隐藏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • JavaScript中使用webuploader实现上传视频功能(demo)

    JavaScript中使用webuploader实现上传视频功能(demo)

    这篇文章主要介绍了webuploader实现上传视频功能,通过本文给大家介绍了上传视频和上传图片的区别讲解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • javascript简化代码 A=alert w=document.writeln

    javascript简化代码 A=alert w=document.writeln

    建议不要这样写代码,考虑以后的修改才是最重要的,代码分层.多把一个功能写成一个js代码或一个类,然后提供接口,这种写法代码会更多,速度也更慢,但人人都推荐这样写,是因为这样子维护方便.而程序不可能一次性写得完美的,永远都可以改进
    2008-02-02
  • JavaScript获取flash对象与网上的有所不同

    JavaScript获取flash对象与网上的有所不同

    关于js获取flash对象,网上有非常多的例子,但不是我想要的,经测试整理,因此本文诞生了
    2014-04-04
  • 正则表达式优化JSON字符串的技巧

    正则表达式优化JSON字符串的技巧

    这篇文章主要介绍了正则表达式优化JSON字符串的技巧的相关资料,需要的朋友可以参考下
    2015-12-12
  • JS代码实现百度地图 画圆 删除标注

    JS代码实现百度地图 画圆 删除标注

    这篇文章主要介绍了JS代码实现百度地图 画圆 删除标注的相关资料,实现此功能的设计思路非常明确,代码简单易懂,非常不错,具有参考借鉴价值,感兴趣的朋友参考下吧
    2016-10-10
  • javascript 实现页面加载进度条代码

    javascript 实现页面加载进度条代码

    javascript 实现页面加载进度条代码,需要的朋友可以参考下。
    2010-04-04
  • JavaScript实现Excel表格效果

    JavaScript实现Excel表格效果

    这篇文章主要为大家详细介绍了JavaScript实现Excel表格效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Javascript实现字数统计

    Javascript实现字数统计

    现在流行的Twitter等微博客网站,有一个很好的用户体验,就是在文本框中输入文字的时候,会自动统计输入的字符,并显示用户还能输入的字符,在限制了140个字的微博客中,这样的小提示可以很好的增强用户体验。
    2015-07-07

最新评论