位置: 编程技术 - 正文

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)

  • 城建税计税依据公式
  • 所得税汇算清缴表在哪里打印
  • 非关联企业借款利息扣除
  • 关税税收优惠记忆口诀
  • 销售分哪几类
  • 月初没报税可以领发票吗
  • 个体户做了定额还需要申报个税吗
  • 销售费用和管理费用和财务费用
  • 自然人独资企业是什么意思
  • 纳税筹划与企业决策
  • 中小型物流公司简介
  • 施工企业所得税税率是多少
  • 长期待摊费用新规定
  • 原始凭证审核的内容
  • ppp项目是否纳入政府债务
  • 营改增后银行增值税如何缴纳
  • 境内所得境外发放工资
  • 开物流公司能挣多少钱
  • 用于集体福利的进项税额转出
  • 顾问费的个税怎么扣
  • 工程劳务公司的生产销售情况分析
  • 信用卡核销是什么意思
  • 天然气税费
  • 技术合同 免税
  • 去年亏损今年第一季度盈利
  • 应交税费的借方表示什么
  • 金税盘发票显示不出确认
  • 出纳人员怎么核对现金日记账?
  • 工商企业年报网上申报时间
  • win10系统更新出现错误代码
  • 存货包括哪些会计账户
  • 投资性房地产减值准备为什么不能转回
  • 公允价值变动损益属于什么科目
  • 信用减值损失会影响所有者权益吗
  • vue3开发app
  • 提取备用金记账凭证图片
  • 损益类科目资产增加在借方还是贷方
  • 【综述】分子预训练模型综述
  • pytorch自定义网络层
  • mit?
  • php制作日历代码
  • 资产减值损失冲减
  • 项目资金支付
  • 合同负债算负债吗
  • 企业所得税核定管理办法
  • 小规模季报利润表的本月数怎么报
  • 税控盘百科
  • mongodb operator
  • 什么情况下企业亏损但继续生产
  • 个人工资薪金如何零申报
  • 什么人可以申请免税
  • 对于在某一时点履行的履约义务,企业应当在客户
  • 出资入股是什么意思
  • 红字更正法红字冲销法
  • 递延所得税资产和递延所得税负债
  • 会计及库管岗位职责(要求)
  • mysql 高效分页
  • mysql使用的协议
  • windows10取消fn功能键
  • xp系统开机自动运行程序
  • freebsd怎么用
  • macbook备份数据
  • windows组策略a-g-dl-p
  • centos 安装7z
  • win8的VPN连接报942错误(xp、win7下均可使用)
  • win7桌面显示电脑图标
  • win8打开cmd的快捷键
  • windows10磁盘100%占用解决
  • javascript总结
  • 如何给图像应用css滤镜处理效果
  • web前端开发工具哪个好
  • android framework 框架层功能梳理
  • jquery中的选择器有哪些
  • android获取手机的基本信息
  • js获取
  • edittext获取焦点弹出键盘
  • 航天金税软件怎么下载
  • 车辆购置税查询不到
  • 注销税务说明
  • 在哪里查看法律
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设