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 相关文章推荐
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
AngularJS语法详解(续)
Jan 23 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
JavaScript中getUTCMinutes()方法的使用详解
Jun 10 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
Aug 31 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
jquery mobile实现可折叠的导航按钮
Mar 11 Javascript
webpack2.0搭建前端项目的教程详解
Apr 05 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
May 28 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
javascript中闭包closure的深入讲解
Mar 03 Javascript
vue+iview实现手机号分段输入框
Mar 25 Vue.js
浅谈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/05/16 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
django-csrf使用和禁用方式
2020/03/13 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
疾病防治方案
2014/05/31 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
费城故事观后感
2015/06/10 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
Django migrate报错的解决方案
2021/05/20 Python
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang