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技术技巧大全(五)
Jan 22 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
javascript:void(0)点击登录没反应怎么解决
Nov 13 Javascript
JavaScript实现瀑布流布局
Jun 28 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
修改jquery中dialog的title属性方法(推荐)
Aug 26 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
Vue自定义指令拖拽功能示例
Feb 17 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
Dec 06 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 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程序?
2006/12/08 PHP
php zend解密软件绿色版测试可用
2008/04/14 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
基于vue的验证码组件的示例代码
2019/01/22 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
应聘会计求职信
2014/06/11 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
员工福利申请报告
2015/05/15 职场文书
公司员工离职感言
2015/08/03 职场文书