位置: 编程技术 - 正文

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)

  • 一般纳税人增值税税率
  • 房产等价置换是否需要缴纳契税?
  • 房屋买卖收税
  • 京东公户的钱怎么转出来
  • 领发票凭证做什么用
  • 摄影服务的开票项目
  • 税务局多扣的一笔钱
  • 培训产生的差旅费
  • 小规模纳税人收到专票后如何处理
  • 应付职工薪酬期末余额在借方表示什么
  • 民营企业月末要报哪些税
  • 劳务成本科目
  • 网上银行 电子回单
  • 承包方收取分包方费用
  • 给客户办理分期
  • 提前还款罚息是多少
  • 上缴税费总额包括个税吗?
  • 税控盘开票流程图解2022
  • 电子商务出纳的岗位职责
  • 红字专用发票信息表需要盖章吗
  • 核销单丢失后应该怎么挂失和补录处理呢?
  • 采购与付款内部控制开题报告
  • 营业成本主要包括
  • 购进产品样品怎么做分录
  • 公司出售车辆
  • 招待客户住宿费用计入什么科目
  • 苹果手机抖音投屏到电视怎么投屏
  • phpstudy配置ftp服务器
  • linux 数据类型
  • mac怎么不能升级系统
  • 记账凭证和原始凭证都是登记账簿的直接依据
  • 对外支付代扣代缴附加税享受减免吗
  • 餐费发票怎么做账务处理
  • php读取word内容
  • vue如何配置路由
  • PHP中使用什么关键字声明变量的作用域为全局
  • 员工福利费会计分录 最新
  • 卖固定资产计入
  • 库管和车间工人哪个好
  • 织梦如何给栏目增加缩略图
  • 怎么把python代码发给别人运行
  • 财务费用手续费在借方还是贷方
  • 税款所属期止
  • 农产品普通发票进项税抵扣
  • 现金流量表里支付的各项税费包括什么
  • 什么情况下不能开税票
  • 应交税费在会计科目的借贷方向
  • 残保金操作流程
  • 其他综合收益什么情况下转入留存收益
  • 免税饲料做为免税吗
  • 公司给买员工保险
  • 销售费用的增值税是进项还是销项
  • 装饰公司工地
  • 基本工资和什么挂钩
  • 外贸企业需要取得什么资质
  • 进项做成了销项怎么调账
  • winxp系统怎么投屏
  • 修改注册表加快开机速度
  • ubuntu包管理命令
  • mac系统小技巧
  • win8系统如何查看电脑mac物理地址
  • w10操作系统内部版本
  • win7系统运行红警黑屏有声音
  • VS2012中C++,#include无法打开源文件
  • python win32print
  • cocos2dx4.0入门
  • opengl光线跟踪代码
  • 利用用英文怎么翻译
  • win7怎么设定关机时间
  • 安卓摄像头设置在哪里
  • ip地址编址方法
  • python winreg
  • 深入理解新发展理念,推进供给侧结构性改革心得体会
  • android对话框setview用法
  • 南京市国家税务局
  • 大渡口在重庆吗
  • 网上查询公司营业执照
  • 作废税票会影响税率吗
  • 草地耕地占用税征收标准
  • 抄报税怎么弄
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设