区别JavaScript函数声明与变量声明

作者:laozhang 时间:2024-04-18 09:34:42 

今天,又由一到题目引发了一场我跟JS基础的较量:首先是


var getName = function(){alert(1)};
function getName(){alert(2)};
getName();// 1

or


function getName(){alert(2)};
var getName = function(){alert(1)};

getName();// 1

为什么我调换声明顺序,结果还是输出以 var 形式声明的函数的值?

有人回答我说 "啊,变量提升呀...",我最开始的理解,就算变量提升,第一种情况提升之后,应该是这样啊:


var getName;
getName = function(){alert(1)};
function getName(){alert(2)};

最后应该输出 2 才对啊(很理直气壮)。

殊不知不只有var声明才会提前,以function fn(){}这种形式声明的函数,会被提升到作用域的最最顶部,然后再是变量的提升。
具体请看下面例子:


fn();//Uncaught TypeError: fn is not a function
var fn = function(){console.log(1)};

but


fn();//2
var fn = function(){console.log(1)};
function fn(){console.log(2)}

足以说明函数提升的更凶一些。

标签:JavaScript,函数声明,变量声明
0
投稿

猜你喜欢

  • Python将图片转换为字符画的方法

    2022-06-15 07:52:27
  • 奇淫技巧和西天取经

    2009-08-24 12:34:00
  • js 原生判断内容区域是否滚动到底部的实例代码

    2024-04-22 22:41:45
  • Oracle性能究极优化 上第1/2页

    2010-07-30 13:26:00
  • javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)

    2024-04-22 12:49:59
  • 一篇文章教你掌握python数据类型的底层实现

    2023-06-01 03:41:14
  • 解决python-redis-lock分布式锁的问题

    2023-05-23 18:57:49
  • python类共享变量操作

    2021-10-21 02:16:32
  • Python正则表达式教程之三:贪婪/非贪婪特性

    2023-08-14 20:20:12
  • Pandas高级教程之Pandas中的GroupBy操作

    2022-04-14 19:22:25
  • jupyter notebook tensorflow打印device信息实例

    2021-02-06 09:34:40
  • python return逻辑判断表达式实现解析

    2023-04-05 08:03:10
  • python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

    2023-11-08 18:30:34
  • MySql索引原理与操作

    2024-01-28 22:27:31
  • 深入理解Vue的数据响应式

    2024-05-09 09:39:15
  • python机器学习实战之K均值聚类

    2022-12-22 21:50:31
  • python使用mysql的两种使用方式

    2024-01-23 10:39:36
  • 数字人组件反写[asp组件开发实例5]

    2009-06-09 13:23:00
  • MySQL数据表分区策略及优缺点分析

    2024-01-22 05:37:19
  • python中使用paramiko模块并实现远程连接服务器执行上传下载功能

    2021-03-29 07:00:56
  • asp之家 网络编程 m.aspxhome.com