位置: 编程技术 - 正文

javascript函数声明和函数表达式区别分析(js函数的声明方式)

编辑:rootadmin

推荐整理分享javascript函数声明和函数表达式区别分析(js函数的声明方式),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript函数声明,javascript 声音,javascript函数声明,javascript 声音,javascript函数用法,javascript函数声明的关键字,javascript 声音,javascript函数声明的关键字,内容如对您有帮助,希望把文章链接给更多的朋友!

  平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种函数的创建,究竟他们用起来有什么区别呢,今天就本着打破砂锅问到底的精神,好好来说说这个让人神魂颠倒的--函数声明。

函数声明

  函数声明示例代码

  这样我们就声明了一个名称为fn的函数,这里出个思考,你认为在这个函数的上面来调用他的话会执行吗?还是会报错?

  控制台输出结果:

  是的,此时fn函数是可以被调用到的,这里来总结下原因。

总结:

  1:此时fn函数是变量的结果,默认存储在全局上下文的变量中(可用 window.函数名 来验证)

  2:此方式为函数声明,在进入全局上下文阶段创建,代码执行阶段,它们已经可用。ps:javaScript在每次进入方法时都会先初始化上下文环境(由全局 → 局部)

  3:它可以影响变量对象(仅影响存储在上下文中的变量)

函数表达式

javascript函数声明和函数表达式区别分析(js函数的声明方式)

  函数表达式示例代码

  这样我们就声明了一个匿名函数,并且把它的引用指向了变量fn?

  再次在该表达式声明的函数上下方各调用一次,来看控制台的输出结果。

  控制台打印结果:

  可以看到代码在执行到第一次调用fn()函数的时候,提示:fn is not a function (fn 不是一个方法),遇到错误而终止运行。

  这说明在第一次调用fn()的同时,var fn 变量没有做为全局对象的一个属性而存在,且 fn 引用的匿名函数上下文也没有被初始化,所以在他之前调用失败。

  控制台打印结果:

  可以看出,在该表达式函数之后来调用是可以的,来总结下那是为什么呢?

总结:

  1:首先变量本身不做为一个函数存在,而是一个匿名函数的引用(值类型的不属于引用)

  2:在代码执行阶段,初始化全局上下文时,它没有被做为全局的一个属性而存在,所以不会造成变量对象的污染

  3:该类型的声明一般在插件的开发比较常见,也可做为闭包中回调函数的调用

  所以 function fn () {} 并不等于 var fn = function () {} ,他们有本质上的区别。

标签: js函数的声明方式

本文链接地址:https://www.jiuchutong.com/biancheng/385602.html 转载请保留说明!

上一篇:javascript常用方法汇总(javascript的常用例子)

下一篇:HTML,CSS,JavaScript速查表推荐(htmlcssjavascript入门经典pdf)

  • 海南增值税发票图片
  • 税率如何计算公式
  • 会计凭证的数字书写示例图
  • 利润表报错了怎么撤回修改
  • 快递费专票可以报销吗
  • 如何处理固定资产长期待摊费
  • 银行存款支付现金股利属于什么科目
  • 外贸委外加工企业成本怎么核算
  • 税务局代增值税专用发票冲红,如何重新申报退税
  • 金税三期账号是自己申请吗
  • 让渡资产使用权收入的确认条件
  • 公司人事怎么办公积金提取流程?
  • 进项税转出的附加税怎么做
  • 模具维修费用清单表格
  • 三证合一后新办企业多久去税务登记
  • 个人开具建筑服务发票
  • 环境保护税法什么时候出台
  • 过路过桥费电子票验证
  • 如何查询以前申诉进度
  • 开专票需要哪些东西
  • 1697508645
  • 仓库折旧费
  • 财务差旅费报销制度
  • windows server 2003 r2 序列号
  • win7为什么现在不能用了
  • php使用js
  • php新手入门
  • 企业所得税的概述
  • 混合销售会计处理
  • 十大网页游戏
  • vue-router
  • 技术服务转包涉税处理
  • 实际缴纳消费税计算公式
  • 业务招待费计入什么会计科目
  • 基本户可以公对私吗
  • 非征期不能抄报
  • gps定位器怎么开启
  • Linux | 将SpringBoot+Vue项目部署到服务器上
  • php无限分类实现不实用递归
  • HTTP Tunneling (HTTP Proxy Socket Client)
  • 简单设置w11
  • 收入调节方式有哪三种
  • 三类职业指的是什么
  • 建筑行业销售材料怎么做
  • centos7.9 防火墙
  • antd pro v5
  • 支付版权使用费怎么记账
  • 影响公司股利分成的因素
  • 实收资本库存现金凭证怎么开
  • 合伙企业怎么注册公司持股人
  • 维修费成本怎么结转
  • 关于职工薪酬的确认和计量下列说法中不正确的是
  • 普通发票冲红重开要多久
  • 低于注册资本转股怎么办
  • 主营业务成本计入成本类账户吗
  • 城建税教育费附加什么时候交
  • 固定资产折旧的会计科目
  • 设备租金收入计什么科目
  • 发票优惠金额怎么开
  • 企业提取盈余公积的比例
  • 代扣的应由职工个人负担的社会保险费计入什么科目
  • 发票作废后对方还能认证吗
  • 出纳需要遵循的原则
  • navicate创建存储过程
  • windows禁用usb口
  • win10系统可以自己安装驱动吗
  • centos更新命令
  • win7电脑老是跳出弹窗广告怎么办
  • linux操作系统安装方法有哪几种
  • linux中ftp
  • 扫描仪在哪儿
  • win8应用错误怎么办
  • [置顶]马粥街残酷史
  • js判断密码强弱
  • 火狐浏览器自定义滚动条
  • 批处理文件bat
  • 人工智能在税务领域应用中的风险与规制
  • 306医院改名什么了
  • 技术服务收入确认方法
  • 电子税务局帐号不知道怎么找
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设