位置: 编程技术 - 正文

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)

  • 增值税的附加税比例
  • 国税纳税标准
  • 什么是增值税发票图片
  • 房地产企业土地出让金抵减销项税额
  • 小微企业免税销售额是按1%还是3%
  • 未达起征点的增值税怎么做账
  • 社群运营收入怎么样
  • 税金附加是什么类
  • 如何合理把公司的钱拿出来
  • 销售免税产品要计算销项税吗
  • 销货方跨月开红字发票流程
  • 本期金额和上期金额怎么填写
  • 火车票增值税申报表怎么填
  • 土增税清算时统借统还利息能否据实扣除
  • 分期收款怎么做账
  • 一般纳税人怎么转小规模
  • 增值税多缴税款退税政策
  • 个人出租房屋应该注意什么
  • 交通补贴可以抵扣个税吗
  • 发票跨月还能重开吗
  • 发票打印机分专票和普票的吗?
  • 增值税专用发票开票必填项
  • 税会差异例子
  • 什么是工会经费返还
  • 开模具公司要什么设备
  • 报销业务招待费属于什么现金流量项目
  • win11正式版好用吗
  • unsupportedfirsthd解决办法
  • 待认证进项税额借贷方向
  • php字符串定义
  • 股权转让合同怎么解除
  • 视同销售货物服务无形资产
  • 错账的种类
  • 个人投资所得税率是多少
  • 减免活动怎么做
  • 公司缴纳残保金怎么做账
  • php 常用算法
  • php中get_magic_quotes_gpc()函数说明
  • php实现文件上传需要使用哪个全局变量
  • 市盈率和市净率多少比较合适
  • 收到社保稳岗补贴转入营业外收入要交企业所得税吧
  • Vue 3 介绍
  • php php
  • 贷款和应收款项属于金融资产吗
  • install PostgreSQL Community Ubuntu Documentation
  • 新设立的企业如何办理开业税务登记
  • 预提管理费用怎么计算
  • MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
  • 为什么结转材料成本差异
  • 即征即退相关证明材料
  • 小规模纳税人的认定标准是什么
  • 建筑业服务包含哪些?
  • 收入结转到本年利润的会计分录
  • 运输费用增值税税率9%
  • 产品质量的保证需要哪几方面的支持
  • 记账凭证账务处理程序的特点是直接根据每张
  • 存货有哪几个科目
  • 进项税额转出的分录怎么做
  • 如何购买车辆交强险保单
  • 出口转内销账务处理以前年度
  • sql server错误和使用情况报告
  • sql server数据库怎么导出
  • mysql怎么修改列的类型
  • Win10 64位正式版系统安装方法全过程图解(U大师)
  • win7无法安装谷歌
  • VirtualBox虚拟机免费
  • u盘安装linux系统遇到的问题
  • windows xp删除所有数据
  • win8怎么清空电脑只剩系统
  • keyword是啥
  • android 布局
  • 删除默认共享的文件夹
  • jquery层级选择器
  • jquery解析html文本
  • unity快速接入第三方sdk
  • javascript教程完整版
  • unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果
  • javascript开关
  • 政治轮训的效果
  • 税务贷app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设