位置: 编程技术 - 正文

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)

  • 印花税滞纳金应计入什么
  • 土地增值税与增值税
  • 预提所得税的计税基础
  • 自然人独资交企业所得税吗
  • 专票抵扣进项税可以省钱吗
  • 应付票据与应付账款
  • 先出货后开票
  • 发票批量作废怎么操作的
  • 贷款利息不能抵扣进项税
  • 建房测绘收费
  • 发放取暖补贴文件
  • 公司的车辆赠送公司
  • 产品质量问题怎么处罚
  • 海关证需要年检吗
  • 全资子公司向母公司划转资产 土地增值税
  • 收到借款利息怎么做会计分录
  • 福利费的发票可以开什么内容
  • 哪些情形可以补胎
  • 美国税改“梦想”很丰满,显示很骨感
  • 销售净利润率是综合反映企业成本效益的重要指标
  • 发票勾选保存后不提交了能留到下月抵扣吗?
  • 法院强制拍卖房子流程
  • linux禁用root用户
  • 部门预算编制方法
  • 不能抵扣的费用
  • 主合同变更对保险的影响
  • 库乐队是苹果自带的嘛
  • 进程 com surrogate
  • 担保余值包括
  • 代理业务资产的意思
  • 酒店的押金怎么做账
  • 房产税是什么意思,简单的回答
  • 进料加工贸易方式
  • 执行企业会计制度的企业有哪些
  • json与json字符串
  • yolov7训练自己的模型用 flask封装
  • php用正则匹配网页的logo
  • 财务处理的时候要做什么
  • vue脚手架配合springsecurity
  • openfoam中文教程
  • lvm部署的命令
  • 数据库查询框架
  • dede转zblog
  • 建筑业的印花税是按含税还是不含税?
  • 税审报告什么时候需要
  • 企业所得税应纳税额的计算公式
  • 劳务外经证预缴税款
  • mysql中的外键的定义
  • python wordcloud库
  • 一次还本付息和分期付息的计算
  • 质量赔偿金
  • 公司欲购买一台设备,现在一次性
  • 月末假退月初假领
  • 运费在会计科目中属于什么费用
  • 固定资产折旧的会计科目
  • 暂估未取得发票汇缴纳税调增怎么填
  • 旅游团建费用会计怎么入账
  • 物业管理费发票税率
  • 车间劳务费计入什么费用
  • 银行询证函快递费谁负担运费
  • 消费满赠送活动规则
  • 生产性生物资产折旧计入什么科目
  • 财务费用包括哪些费用
  • 拒绝访问.exe出错
  • dgservice.exe是什么
  • NPFMSG.exe - NPFMSG是什么进程 有什么用
  • win8如何设置
  • 可用分区az
  • win7系统损坏无法开机怎么重装
  • 利用python进行
  • jQuery+PHP实现可编辑表格字段内容并实时保存
  • nodejs爬取数据
  • js中使用组件
  • android反编译smali
  • js进阶视频教程
  • python爬虫从入门到精通
  • js水平垂直居中怎么设置
  • 关税由谁来承担
  • 金税三期是什么内容
  • 广东省国家税务总局稽查局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设