位置: 编程技术 - 正文

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)

  • 航天金税盘使用说明
  • 结售汇有金额限制吗
  • 个税汇算清缴为啥要补交
  • 营业外收入缴纳税款
  • 法人转入公司的资金怎么做账
  • 收到的其他与筹资活动有关的现金包括
  • 行政单位会议纪要范文3篇
  • 非居民企业出租境内不动产
  • 企业所得税按月还是按季度申报
  • 仓库物料入库
  • 退货但发票不冲销
  • 消费税增值税如何调整?
  • 最新个人独资企业
  • 物业服务合同印花算什么类型
  • 减税降费各项政策
  • 固定资产的残值怎么算出来的
  • 劳务人员奖金如何纳税
  • 企业收到政府补贴100000元业务题
  • 公司职员培训与管理
  • 推广的产品
  • 企业补充流动资金具体用途
  • 销售商品包装材料怎么做
  • 无法添加用户和组
  • 企业微信api错误码
  • Win10 19043.1237 9月累积更新 KB5005565推送(附更新修复+下载)
  • 资产减值准备怎么影响利润
  • php必背知识点
  • 罚款计入营业外支出影响当期损益
  • elements vue
  • 未确认融资费用借贷方向
  • 事业单位资产管理中存在的问题及整改措施
  • 对外支付代扣代缴附加税享受减免吗
  • 小规模纳税人企业所得税税收优惠政策
  • 会计有哪几种
  • smart模板教程
  • php 重写 重载
  • PHP+JQuery+Ajax实现分页方法详解
  • 实收资本大于注册资本是什么意思
  • 财务费用为负的意思
  • 递延所得税资产借贷方向
  • 如何测试php
  • 土方工程开票
  • 员工手机补助单怎么做账
  • 帝国cms扣除会员怎么办
  • 房产税和城镇土地使用税需要计提吗
  • 购买种子能抵扣进项吗
  • 免税农产品发票怎么抵扣申报
  • 销售自己使用过的物品免税吗
  • 公司开办费的会计分录
  • 出纳属于会计岗位职责吗
  • 加油票子能报销吗
  • 外地预缴怎么算
  • 内资非独立核算的企业
  • 免征的增值税如何处理
  • 装修费未计入长期费用
  • 年终汇算清缴的税种
  • 4s店收到红字发票怎么开
  • 定额发票和增值税普通发票的区别
  • 计划成本法和实际成本法的适用范围
  • 会计工作移交的时候需要有谁在场
  • 填写记账凭证内容摘要的三个要素
  • sql server获取字段长度
  • win7安装windows无法安装所需的文件请确保
  • windows2003硬盘分区
  • xp系统如何去掉开机登陆界面
  • WinCfg32.exe - WinCfg32是什么进程
  • win8如何打开设置
  • win7双声道
  • win10周年更新版是什么意思
  • linux apache2配置
  • js如何将毫秒转换为日期
  • node.js web
  • jquery操作html代码
  • unity3d操作
  • diy相册设计
  • python入门小程序编写
  • javascript中匿名函数
  • 退休人员还写工作单位吗
  • 纳税申报期限2023
  • 杭州地税局办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设