位置: 编程技术 - 正文

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)

  • 增值税不用交还要计提吗
  • 固定资产登记在三栏式吗
  • 公司购车购置税有优惠吗
  • 合同不交印花税合法吗
  • 行政事业性收费票据
  • 个人动产租赁所得税税率表最新
  • 购入固定资产一次性扣除
  • 不动产可以拆吗
  • 私车公用产生的过路费怎么开发票
  • 钱汇错需要退回应该怎么做分录?
  • 增值税过期未抵扣
  • 预付卡增值税如何申报
  • 租车租赁费税率是多少
  • 国家对发票开具时间有没有具体规定?
  • 房地产预收房款怎么开票
  • 小规模核定征收税率
  • 物业管理企业简介范文
  • 以前年度利润和当年净利润
  • 个税经营所得申报常见问题答疑
  • 营业外收入可以在贷方吗
  • 商标注册费相关法律法规
  • win10好几个操作系统
  • 其他业务收入对方科目
  • kavsvc.exe - kavsvc是什么进程 有什么作用
  • removed.exe - removed是什么进程 有什么用
  • 融资a轮之前
  • win10的环境配置在哪
  • 睿因无线路由器怎么设置
  • Ichetucknee河的海牛,佛罗里达州 (© Jennifer Adler/Alamy)
  • zendframework3中文手册
  • 无形资产的会计处理
  • 萤火虫发光器的用途
  • vue ts
  • 投标文件中财务报表包括哪些内容
  • 对公结售汇的合规风险
  • 固定资产加速折旧最新政策2022
  • php session_id
  • thinkphp-5.0
  • 如何用java写接口
  • lstm crf
  • 酒店押金的账务处理
  • 自产产品对外赠送的会计处理方法
  • 爱上源码,重学Spring IoC深入
  • 公司购买的房屋怎么入账
  • 销售折扣 会计处理
  • php框架是干什么的
  • java初学者教程
  • 附加税申报核心内容
  • sql server功能选择
  • 土地使用权转让合法吗
  • 跨月的凭证出错如何处理
  • 弥补亏损账务处理流程
  • 职工福利基金提取流程
  • 金蝶旗舰版的数据怎么在标准版打开
  • 小规模纳税人买车可以抵扣哪些税
  • 会计各种凭证的填写示例
  • 硬盘安装后不显示
  • ubuntu 无法正常启动
  • u盘制作winpe启动盘
  • win10系统哪款好
  • win10远程桌面连接教程
  • 如何保留windows.old
  • win7ghost纯净版美化版
  • linux新手入门教程
  • 如何关闭win8自带杀毒
  • opengl纹理错误变成条纹
  • opengl visual studio
  • photon server 限制防火墙
  • 置顶txt
  • 如何用nodejs搭建服务端
  • android获取meid
  • 企业所得税申报表怎么填写
  • 西安市港务区属于哪个街道办
  • 公司0申报怎么申报视频
  • 申报期包括不包括最后一天
  • 滞留票税务局会罚款多少
  • 上饶二手房契税
  • 3.5排量的车船税多少钱
  • 河南地税app
  • 未开票企业怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设