位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享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)

  • 混合销售行为如何缴纳增值税税率
  • 所得税退税账务处理
  • 小规模纳税人不开票需要纳税吗
  • 缴纳个人所得税会计分录怎么写
  • 增值税附加税的会计处理
  • 运输服务属于生产劳务吗
  • 个体户可以不开公户吗?打款到法人卡
  • 公司筹建期间可以多久
  • 固定资产清理属于流动资产吗
  • 负债类科目有借方余额吗
  • 政策性用房包括哪些
  • 报损失怎么报
  • 实收资本未到位可以注销吗?
  • 房地产企业未出售的房子是否要交房产税
  • 现金流量净额为负说明什么
  • 增值税进项抵扣完了还上附加税吗
  • 跨区经营的税务政策
  • 红字负数发票可以抵扣吗
  • 出租房产免收租金,如何缴纳房产税
  • 公司的资产负债表包括
  • 如何在Excel中添加筛选项
  • 购买机器设备配件账务处理
  • 出口转内销发票抵扣
  • 如何在windows11上安装动态壁纸
  • 股东能随便提走入账资金吗
  • windows11 微软
  • 数字证书认证系统
  • win11安装不显示wifi
  • 确定注册资本的方法
  • PHP:oci_fetch_assoc()的用法_Oracle函数
  • PHP:pg_set_client_encoding()的用法_PostgreSQL函数
  • PHP:pg_get_notify()的用法_PostgreSQL函数
  • 融资租赁与经营租赁的区别主要是
  • 梅德威海滩棕榈树间散步的冲浪者,印尼巴厘岛 (© helivideo/GettyImages)
  • php做网页
  • thinkphp addons
  • vue-nginx刷新404问题
  • vuemvvm模式
  • 2022年最新公务接待用餐标准
  • 准予扣除的业务宣传费
  • 购买方红字信息表已开销售方系统查不到
  • 材料发出会计科目
  • wordpress图片大小设置
  • 企业应付账款明细表
  • 工业总产值和收入产值哪个大
  • 接受捐赠的增值税计入会计利润吗
  • 主营业务收入明细科目
  • 本年利润必须转入利润分配吗
  • 个体工商户需要给员工交社保吗
  • 贷款利息收入要交增值税吗
  • 母公司孙子公司
  • 低于注册资本转股怎么办
  • 房产契税新政策2023
  • 暂估成本跨年后收到票如何处理,红冲按哪个金额冲
  • 固定资产折旧的会计科目
  • 试算不平衡的原因是什么
  • 奖金如何做账分录
  • 抵扣认证的发票需要还回去吗
  • 刻章费发票怎么开
  • 自助回单打印和网银回单
  • windows10安装教程u盘安装
  • WIN7系统如何设置自动关机
  • win8激活点不进去
  • win10收不到短信验证码
  • winxp设置在哪
  • linux建立动态库链接
  • sysscjh.exe是什么文件
  • mac safari浏览器翻译功能
  • win10 无线热点
  • win7系统怎么锁定屏幕
  • cocos2dx官方文档
  • perl删除文件夹
  • 深入理解ffmpeg pdf
  • 使用jquery操作dom
  • node.js的安装步骤
  • androiddialog圆角
  • 国家税务总局全国增值税发票查验平台
  • 煤炭资源税税率是多少啊
  • 12366纳税服务热线存在的问题
  • 国家税务局宝鸡市税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号