位置: 编程技术 - 正文

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)

  • 增值税为什么不重复征税
  • 企业销售固定资产车辆怎么开票
  • 不得税前扣除的贷款利息
  • 公司注销,账务怎么处理
  • 游戏公司收入确认方法
  • 专票过期了
  • 计提社保贷方科目是什么
  • 企业所得税研发费用怎么填
  • 外贸企业视同内销进项可以抵扣吗
  • 企业股权转让留存收益可以扣除吗
  • 医院 科室承包
  • 出售交易性金融资产的投资收益
  • 当月作废的专票需要开负数发票么
  • 重复缴税怎么做账
  • 一次性医保补助多少钱
  • 通用机打发票上没有税率
  • 专票遗失需要怎么处理?
  • 2018新个税
  • 有限合伙人的投资风险有哪些
  • 1697510614
  • 押金拿不到怎么解决
  • 电脑开机硬盘自检怎么回事
  • 费用发票可以不上账吗
  • dhcp存在哪些安全隐患
  • win10任务栏显示年月日
  • Linux系统中怎么开机自动运行拍摄文件
  • PHP CURL CURLOPT参数说明(curl_setopt)
  • PHP:apache_child_terminate()的用法_Apache函数
  • 劳务公司社保手续办理
  • system 进程
  • To install them, you can run: npm install --save core-js/modules/es.array.push.js
  • 关于企业发生的手续费及佣金支出的扣除标准
  • 费用要素是企业对各种费用按经济用途进行的分类
  • 土地增值税案例题库
  • wordpress如何使用
  • php框架运行机制
  • php curl_exec
  • phpcms怎么样
  • ps怎么把图片套入样机快捷键
  • phpcms使用教程
  • 利息发票可以抵扣吗
  • dedecms使用教程
  • 经营一家淘宝店铺,自然就应该做好
  • 金税盘离线开票时间超限怎么办
  • 小规模纳税人起征点变化历程
  • 企业向个人借款协议范本
  • 清卡操作流程
  • 三证合一后个体交税吗
  • 银行会计的基本核算方法包括的内容有
  • 核销坏账递延资产怎么算
  • Windows2003 SQL2005添加系统用户修改系统登录密码
  • 员工出差时法律规定
  • 出口货物退货如何入账
  • 劳务合同如果不发工资怎么办
  • 货物已到发票未到怎么做账
  • 财务费用包括什么项目
  • 退回上年度企业所得税
  • 营业税金及附加会计分录
  • 分析企业盈余状况
  • 成本会计主要做什么工作
  • FreeBSD 6.2-RELEASE下载
  • linux常用命令csdn
  • windows10x预览版
  • linux创建.c
  • nodejs爬取数据
  • linux whatis与whatis database 使用及查询方法(man使用实例)
  • 文本框几种常用属性
  • jquery插件使用教程
  • 如何解决android兼容问题
  • jquery java
  • javascript获取值
  • unity unite
  • easyui toolbar布局
  • jsonobject.parseobject异常
  • 外经证预缴税款网上流程
  • 税务被风控了多久才会解除
  • ca证书网上申请
  • 怎样理解句子我还没弄清楚是怎么回事
  • 加大税务稽查工作的建议
  • 跨境电商上什么货源好
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设