位置: 编程技术 - 正文

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)

  • 减免的企业所得税计入什么科目
  • 借款合同怎么做
  • 企业注销,账面余额怎样调账
  • 住宿费收据属于什么凭证
  • 电子税务局怎么登录
  • 混凝土开票的型号规格
  • 非主营业务收入计入什么科目
  • 成本占收入比重分析
  • 库存商品损失怎么做账
  • 民非组织捐赠收入免税
  • 房地产出租是否缴纳土地增值税
  • 产品入库实际成本是什么凭证
  • 技术转让收入纳税调整
  • 销售退回所得税差异怎么处理
  • 对供应商罚款通知单怎么写
  • 未及时转固
  • 房地产企业预收账款
  • 融资租赁和融资性售后回租的区别
  • 工会经费返还账务处理,另记账么
  • 一般纳税人资格登记表
  • applepay怎么用云闪付
  • win10系统如何禁用驱动强制签名
  • 公司员工私车公用协议要签吗
  • thinkphp添加数据
  • php缓存优化
  • 个人所得税手续费比例
  • linux系统备份整个硬盘的命令
  • 下岗职工生活费最多发多少个月
  • 脐橙产业可行性报告
  • 提取企业发展基金用到银行存款科目吗
  • php作品
  • 公司注销后所欠债怎么办
  • 进项税额转出的所有会计分录
  • 员工报销垫付的钱怎么入账
  • 小规模单位没交五险一金
  • ICLR2023《Crossformer: Transformer Utilizing Cross-Dimension Dependency for Multivariate Time Series》
  • 开发票的销售收入,正规的做账怎么做
  • 小规模纳税人应交税费科目设置
  • dedecms安装
  • 会计自制原始凭证有哪些
  • 商业承兑汇票如何追索
  • 汇款退回多久到账
  • 企业为员工承担个人部分的五险 一金可以税前扣除?
  • 外购固定资产入账
  • 公司收取的门禁费用
  • 税务怎么认定虚列工资
  • 未认证key
  • 挂靠的项目如何做账?
  • 什么是稳岗补贴呢
  • 困难企业社保费返还
  • 公司购买的商业保险如何使用
  • 资本性支出是什么活动
  • 员工还款还公司会计分录
  • 银行贷款利息支出税前扣除标准
  • 公司经营范围怎么填
  • win8.1怎么升级到win11
  • 以管理员的身份运行是什么意思win10
  • 自定义winre
  • npfmntor.exe - npfmntor是什么进程 有什么用
  • lsm.exe是什么程序
  • Win8如何根据需要自定义文件管理器导航窗格
  • windows7开机磁盘检查怎么取消
  • linux中的vi编辑器一般有哪三个模式
  • portainer集群管理
  • jquery操作dom
  • rgb与yuv哪个好
  • node发送短信
  • vue实现下载功能
  • sed cant read
  • html、css和jquery相结合实现简单的进度条效果实例代码
  • python基础教程电子版
  • clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
  • 餐饮服务需要交印花税吗?
  • 个人出租商铺个人所得税计算
  • 残疾人保障金税前扣除规定
  • 四川国税局普通发票查询?
  • 沈阳国税局局长是谁
  • 代理运输服务费和运费的区别
  • 依法行政的观念
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设