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列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
Aug 31 Javascript
jquery获取img的src值的简单实例
May 17 Javascript
JS实现css hover操作的方法示例
Apr 07 Javascript
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
May 22 Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
javascript 函数式编程
2007/08/16 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
Python fileinput模块使用实例
2015/05/28 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
Django实现简单网页弹出警告代码
2019/11/15 Python
使用Python实现Wake On Lan远程开机功能
2020/01/22 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
Python爬取某平台短视频的方法
2021/02/08 Python
Linux文件系统类型
2012/09/16 面试题
售后客服工作职责
2014/06/16 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
参观邀请函范文
2015/02/02 职场文书
工作会议通知
2015/04/15 职场文书
教师病假条范文
2015/08/17 职场文书
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server