位置: 编程技术 - 正文

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)

  • 旧面包车能跑长途吗
  • 海关对哪些物品有出入境的限制规定
  • 所得税费用的计提
  • 印花税纳税义务人有哪些
  • 一般纳税人公司抵扣
  • 无票收入也需要开票吗
  • 劳务收入个税需要进行所得税汇算吗
  • 产品未含税价格怎么算
  • 企业清算的种类
  • 收到法人的借款
  • 外地办事处能交当地社保吗
  • 民办非企业收入会计分录
  • 土地划拨需要缴纳增值税
  • 债权受让方如何交税
  • 开公司怎么报账
  • 企业的商品产品包括
  • 商业保险可以报税吗
  • 增值税发票的开具问题
  • 印花税少于1元怎么处理
  • 发票跨年冲销
  • 工会经费申报网址是什么
  • 建筑业进项税抵扣不足
  • 金蝶现金流量表附表项目如何指定
  • 地方教育费附加的会计分录
  • 税务局增项
  • 资产减值损失借方余额在利润表怎么填列
  • 苹果双系统不小心删了苹果系统
  • win10怎么看电脑名称
  • 无法手动设置时区
  • 腾讯手游助手卡顿严重
  • vmware11安装win10
  • macbookpro提醒事项
  • 存货跌价准备是谁的备抵账户
  • 贴息贷款利息怎么入账
  • php字符串定义
  • 新手刚接触财务
  • mac如何打开蓝牙
  • 企业所得税扣除标准表
  • 个体工商户生产经营所得税税率表2023
  • chrome插件扩展名
  • 日落时的雪景
  • php处理数组的函数
  • Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
  • php lcg_value与mt_rand生成0~1随机小数的效果对比分析
  • 季报的季初季末数怎么填
  • 企业利润总额为负
  • vue3.0项目实战视频
  • 浏览器本地存储的方式
  • php微信公众号商城源码
  • element插件安装方法
  • 加工行业增值税负率一般控制在多少?
  • 发票验证不过去会怎么样
  • 小规模纳税人免税怎么做账
  • 没有发票的福利支出如何入帐
  • 社会团体指的是什么单位
  • 合伙企业分配利润会计分录
  • 小规模纳税人收普票和专票有什么区别
  • 可抵扣进项税的普通发票
  • 上年度企业所得税调整需要调账吗
  • 往酒吧送酒怎么样
  • 代垫电费收回开票吗
  • 以红字冲回
  • 国家土地补偿款
  • 购买空调报销写什么科目的
  • 商场联营扣点的合作方式
  • Tech Ed 2008:HPC Server 2008讲解
  • 如何移植操作系统
  • win70
  • Win10 Mobile 10586.164上手体验视频评测
  • js经典案例代码大全
  • javascript字体属性
  • android更新ui的方式
  • shell 自定义函数
  • jquery回车触发事件
  • js图形界面
  • jquery的实现原理
  • python代码检测在线
  • python3 冒泡排序
  • 安卓权限管理app
  • 企业出租房产的税收优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设