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实现文本框鼠标右击无效以及不能输入的代码
Nov 05 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
Jan 15 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
总结AngularJS开发者最常犯的十个错误
Aug 31 Javascript
js时间查询插件使用详解
Apr 07 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
vue.js与后台数据交互的实例讲解
Aug 08 Javascript
vue实现动态显示与隐藏底部导航的方法分析
Feb 11 Javascript
vue滚动tab跟随切换效果
Jun 29 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
Sep 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微信公众平台配置接口开发程序
2016/09/22 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
javascript 页面只自动刷新一次
2009/07/10 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python解释执行原理分析
2014/08/22 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
值得收藏的10道python 面试题
2019/04/15 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
Python日志处理模块logging用法解析
2020/05/19 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
市三好学生主要事迹
2014/01/28 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
银行委托书范本
2014/09/28 职场文书
表扬稿范文
2015/01/17 职场文书
2015年基建工作总结范文
2015/05/23 职场文书