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的匿名函数来分析几段简单有趣的代码
Jun 29 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
jquery图片切换插件
Mar 16 Javascript
ExtJs动态生成treepanel的Json格式
Jul 19 Javascript
jquery实现表单输入时提示文字滑动向上效果
Aug 10 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
ES5学习教程之Array对象
Apr 01 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
Sep 05 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 Javascript
JsonProperty 的使用方法详解
Oct 11 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
Jun 01 Javascript
JS倒计时两种实现方式代码实例
Jul 27 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里得到前天和昨天的日期的代码
2007/08/16 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
Angular排序实例详解
2017/06/28 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python监控nginx端口和进程状态
2019/09/06 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
通过Python实现一个简单的html页面
2020/05/16 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
Ratchet 模态框的实现
2020/08/19 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
关于Java finally的面试题
2016/04/27 面试题
服装销售人员求职自我评价
2013/09/26 职场文书
应聘会计求职信
2014/06/11 职场文书
Redis入门基础常用操作命令整理
2022/06/01 Redis