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 相关文章推荐
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
Nov 11 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
jQuery表单插件ajaxForm实例详解
Jan 17 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
input type=file 选择图片并且实现预览效果的实例
Oct 26 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
Apr 11 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 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
博士208HAF收音机实习报告
2021/03/02 无线电
提升PHP执行速度全攻略(下)
2006/10/09 PHP
php&amp;java(一)
2006/10/09 PHP
PHP 处理图片的类实现代码
2009/10/23 PHP
php简单的会话类代码
2011/08/08 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
PHP线程的内存回收问题
2016/07/08 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
今天是星期几的4种JS代码写法
2013/09/17 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
js获取url传值的方法
2015/12/18 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
python主要用于哪些方向
2020/07/05 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
工厂厂长的职责
2013/12/12 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
项目投资合作意向书
2014/07/29 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
创业计划书之养殖业
2019/10/11 职场文书
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers