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 继承详解(四)
Jul 13 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
Mar 23 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
Mar 01 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
Oct 01 Javascript
Javascript复制实例详解
Jan 28 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
vue2.0 路由模式mode=&quot;history&quot;的作用
Oct 18 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
Nov 08 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
webpack打包优化的几个方法总结
Feb 10 Javascript
Vue实现购物车基本功能
Nov 08 Javascript
JavaScript的Set数据结构详解
Feb 18 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python实现从web抓取文档的方法
2014/09/26 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
pygame实现简易飞机大战
2018/09/11 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
Python中的元组介绍
2019/01/28 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
2014年幼儿园教师工作总结
2014/11/08 职场文书
小学生读书笔记范文
2015/06/30 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技