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轻松实现Ajax的实例代码
Aug 16 Javascript
Jquery validation remote 验证的缓存问题解决方法
Mar 25 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
vue组件实现文字居中对齐的方法
Aug 23 Javascript
layui使用templet格式化表格数据的方法
Sep 16 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
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
给ECShop添加最新评论
2015/01/07 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
jupyter 导入csv文件方式
2020/04/21 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
2014年国培研修感言
2014/03/09 职场文书
完整版商业计划书
2014/09/15 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
离职信范本
2015/06/23 职场文书