javascript中Function类型详解


Posted in Javascript onApril 28, 2015

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>

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

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

Javascript 相关文章推荐
JQuery与Ajax常用代码实现对比
Oct 03 Javascript
在javaScript中关于submit和button的区别介绍
Oct 20 Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 Javascript
javascript常用方法汇总
Dec 02 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
详解js中Json的语法与格式
Nov 22 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
May 02 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
Jun 10 Javascript
es6中reduce的基本使用方法
Sep 10 Javascript
element跨分页操作选择详解
Jun 29 Javascript
浅谈Jquery为元素绑定事件
Apr 27 #Javascript
javascript实现实时输出当前的时间
Apr 27 #Javascript
javascript模拟php函数in_array
Apr 27 #Javascript
js实现刷新iframe的方法汇总
Apr 27 #Javascript
JavaScript数组和循环详解
Apr 27 #Javascript
javascript实现全局匹配并替换的方法
Apr 27 #Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 #Javascript
You might like
人族 Terran 魔法与科技
2020/03/14 星际争霸
基于mysql的论坛(4)
2006/10/09 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
PHP反射实际应用示例
2019/04/03 PHP
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
Python解惑之整数比较详解
2017/04/24 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python 实现return返回多个值
2019/11/19 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
银行自荐信范文
2013/10/07 职场文书
医院检讨书范文
2014/02/01 职场文书
工作表现自我评价
2014/02/08 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS