位置: 编程技术 - 正文

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)

  • 印花税申报是含税收入还是不含税收入
  • 房产税相关问题
  • 持有至到期投资核算内容
  • 少数股东损益是
  • 个人微信转账可以认定劳动关系吗
  • 销售过程中客户买的是什么
  • 自行建造固定资产中的自营工程,在领用工程物资
  • 收入工程款后什么时候计提印花税
  • 哪些企业可以享受加计抵减政策
  • 小规模纳税人出租
  • 企业资产负债表图片
  • 电力安装工程合同范本
  • 高新技术企业一定是先进制造业吗
  • 取得企业增值税发票
  • 定制化软件开发
  • 317房地产政策解读
  • 企业所得税报表模板
  • 政府收取的工程物资
  • 企业所得税年报更正申报
  • 福利企业的增值税是多少
  • 收到场地租赁费用计入什么科目
  • 一般纳税人交税标准是多少
  • 从租计征的房产税纳税义务发生时间
  • 以现金收回已核销的不良贷款分录?
  • window1020h2更新问题
  • 转让二手宾馆需要注意事项
  • 合伙企业财产的管理和使用规定
  • php数组函数有哪些
  • 代扣代缴个人工会经费 企业所得税
  • 备份计算机需要多久
  • 向境外股东分配利润代扣代缴企业所得税
  • 外销收入含税吗
  • 捐赠与赞助
  • vue public assets
  • ipad air3发布会价格
  • 工程未审计资金能支付到多少
  • React hooks中 useState踩坑-=--异步问题
  • 代扣增值税如何做账
  • 资产负债表中的货币资金怎么算
  • 对方开了红字信息表我们开发票怎么做账
  • 应税货物及劳务无法录入
  • php remote_addr
  • python合并多个excel
  • 支付职工差旅费发生的现金流出
  • 什么是完税证明?完税证明丢了怎么办公司
  • 其他应收账款怎么做预算会计分录
  • 公司认缴的钱可以动吗
  • 异地工程增值税按几个点预缴
  • 企业注销需要清产核资吗
  • 年底了,你们公司年会干点啥都?
  • 空调维修费入办公费还是修理费
  • 贷方是收入还是借方是收入
  • 会员卡收费
  • 应交增值税结转凭证
  • 内部应收账款计提坏账准备的抵消例题
  • 长期股权投资的账务处理
  • 债务利息收入
  • 投资性房地产用三栏式吗
  • 企业重组合并
  • 用友t3固定资产反结账的操作步骤
  • 收到保险理赔款计入什么科目
  • 预付账款暂估是什么意思
  • 建账内容
  • sqlserver 触发器 redis
  • mysql 左链接 右链接
  • mysql5.6允许远程连接
  • solaris教程
  • Windows Server 2003网络负载均衡如何实现
  • 取消windows开机登录密码
  • centos smb服务
  • uefi bios ufilify
  • 鼠标的指针
  • Java反射机制和动态代理机制
  • openvz
  • jquery打开本地html
  • unity协程会阻塞主线程吗
  • Re: Latest Version: 3.7.9 (January 18th, 2015)
  • javascript命名空间
  • 税务局副科长工资
  • 长春市朝阳区公安局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设