位置: 编程技术 - 正文

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)

  • 个人独资企业要注意什么
  • 增值税开票软件在哪下载
  • 申报个税时怎么获取个税专项附加扣除
  • 汇算清缴补缴企业所得税怎么做账
  • 消费税在哪个环节可以抵扣
  • 预付卡发票可以报销吗?
  • 新会计准则下具体会计准则对银行的影响不包括
  • 以前月份暂估成本怎么冲
  • 本期缴纳上期应缴税额
  • 房地产公司环境
  • 小规模纳税人季报还是月报?
  • 进口小汽车消费税组成计税价格
  • 营改增对建筑业的影响有哪些
  • 上年度的印花税怎么计算
  • 购买方和销售方一样可以报销吗
  • 出口退税报关单解密在哪下载
  • 买标书怎么做分录
  • 企业筹办期间发生的费用处理
  • 利息支出手续费
  • 旅游业务增值税税率
  • 财务报表教育费附加包含地方教育费附加吗
  • 季度申报利润表怎么填
  • 减征资源税中是否包含水资源税?
  • 借贷记账法的记账规则是
  • 软件企业收到即征即退分录
  • 1697510614
  • 一般纳税人简易计税会计分录
  • 期末留抵税额可以冲减欠税吗
  • 华为鸿蒙系统怎么样
  • win10电脑文件夹打不开
  • 工地安装监控哪个部门管
  • 房地产会计工资一般多少
  • 开办补贴
  • 资产负债表怎么算资产负债率
  • 公允价值变动损益借贷方向增减
  • 增值税专用发票几个点
  • 工资总额提取福利费
  • require.context()的用法详解
  • 企业汇算清缴后发现有多计提的成本
  • local_rank,rank,node等理解
  • qt opencv ffmpeg
  • 贪吃蛇python小白
  • 购买员工团体意外险肺炎能报销吗
  • 没有初级会计证可以从事会计工作吗
  • 土地增值税成本费用
  • 织梦论坛
  • 所得税费用可以计入税金及附加吗
  • 账务核对的主要内容
  • 车辆保险费用查询
  • 建设单位支付给施工单位的民工工资
  • 收到银行承兑如何做账
  • 预付和挂账如何区分
  • 诉讼费用负担原则是什么
  • 上期留抵税额怎么在账上提现
  • 企业营业外支出是什么意思
  • 税务局退款会计分录
  • 员工团体意外保险受益人是谁
  • 让渡是什么
  • windows hellopin是什么意思
  • solaris 安装
  • mac 应用
  • imecmnt.exe
  • redhat无法启动
  • 安卓自定义app
  • jsp中onload事件
  • 新版unity
  • node.js做服务器
  • jQuery插件在使用前都需要引入jQuery的js文件
  • python基本用法
  • 安卓压缩图片
  • xml-js
  • python模块和包的区别
  • javascript中的对象用于
  • 使用jQuery Ajax 请求webservice来实现更简练的Ajax
  • js变量作用域
  • python汉字
  • python语言解析
  • 车辆购置税查询不到
  • 三证合一后还有税务登记证吗?
  • 汽车商业险退保还有手续费吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设