位置: 编程技术 - 正文

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)

  • 收据大写十万元整怎么写标准
  • 人员经费包括哪些方面?
  • 网吧是否征收文物保护费
  • 出口退税中的免抵税额可以认为是交的税吗
  • 自然人生产经营所得,如何计算个税
  • 印花税多报了几块钱税务局会找我吗
  • 退回资本金要交税吗
  • 土地转让缴纳增值税政策
  • 应收票据周转率高
  • 预付账款年底账务怎么做账?
  • 结转增值税销项的账务处理
  • 私募基金款打到什么账户
  • 退回房租含税的情况怎么入账?
  • 融资租入固定资产
  • etc发票进项抵扣的最新政策
  • 租给公司仓库要发票怎么办
  • 怎么查找地方教育附加税的计税依据?
  • 银行承兑汇票加工费合同
  • 印花税滞纳金计入什么科目
  • 合同作废合同
  • 主营业务收入怎么结转
  • 企业所得税季报资产总额怎么填
  • 个税申报已经申报如何更改
  • 2021年购买车辆的进项税能抵扣吗
  • 应收账款分录借方负数转到预收账款的哪方
  • 建筑企业跨地区
  • 去年的财务费用忘记帐能入今年的账吗?
  • 营改增建筑业税率变化时间
  • 1697510839
  • 无法找到脚本文件c:\windows\system32
  • windowsmodulesinstaller占用cpu
  • 公司股权转让的印花税谁来承担
  • 深入理解php内核
  • 在缴纳企业所得税的情形
  • 手把手教你使用opc
  • php实现的功能
  • 保险代理人展业成本如何计算
  • 火车票抵扣进项税需要认证吗
  • 工伤补贴如何做帐
  • 其他收益所得税汇算清缴时需要调增吗
  • 企业财务部门对业务部门的监管要求
  • 开了红字信息表对方没开红票
  • 境外汇款收款人承担手续费
  • 每月企业所得税怎么征收
  • sql server 2008的安全机制
  • 预包装的标签有哪几种
  • 保险没有合同算生效吗
  • 跨年红字发票账务处理
  • 未交税金免抵退多少税
  • 企业所得税审计调整分录
  • 回收材料的好处和问题
  • 出口退税转免税怎么写个说明
  • 如何登录网络?
  • centos7.4修改主机名
  • win7电脑磁盘空间不足清理步骤
  • win10更新预览版
  • fsav32.exe是什么进程 有什么作用 fsav32进程查询
  • smss.exe什么意思
  • windows8怎么进入bios
  • linux命令怎么用
  • linux系统查看系统信息
  • win7系统误删文件可以恢复吗
  • win1021年更新
  • win10系统打不开网页怎么办
  • unity怎么念
  • 错误化
  • 简述javascript中的函数
  • 安卓安装两个不同版本软件
  • u盘通过什么读写数据
  • 编写python
  • python wms
  • 使用vs code开发Django
  • shell脚本-n
  • jquery通过id赋值
  • 充电桩充电怎么收费,几种收费方法
  • 无偿赠送的税务怎么处理
  • 全国征兵网官网报名
  • 纳税申报期限和税款缴纳期限一样吗
  • 城市维护建设税,教育费附加,地方教育费附加
  • 河南工商年检网上申报APP
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设