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 相关文章推荐
用Javascript实现锚点(Anchor)间平滑跳转
Sep 08 Javascript
JS的Document属性和方法小结
Sep 17 Javascript
有关json_decode乱码及NULL的问题
Oct 13 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
JavaScript之WebSocket技术详解
Nov 18 Javascript
利用百度地图API获取当前位置信息的实例
Nov 06 Javascript
微信小程序实现文字跑马灯效果
May 26 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
Aug 27 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 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
php实现CSV文件导入和导出
2015/10/24 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
js字符串类型String常用操作实例总结
2019/07/05 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
Python中按键来获取指定的值
2019/03/02 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
五一家具促销方案
2014/01/10 职场文书
《争吵》教学反思
2014/02/15 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
优秀食品类广告词
2014/03/19 职场文书
初中班主任评语大全
2014/04/24 职场文书
个人安全承诺书
2014/05/22 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android