专栏首页前端实习日记JavaScript变量提升:函数提升要比变量提升更猛

JavaScript变量提升:函数提升要比变量提升更猛

今天,又由一到题目引发了一场我跟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)}

足以说明函数提升的更凶一些。 原理:我先去研究一下原理,搞懂了在来分享

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JVM学习笔记——java内存模型与线程(1)

    多任务处理出现的重要原因是计算机的运算速度与存储及通信子系统的速度差距太大,大量的时间花费在磁盘I/O,数据库访问或者数据库访问上。除了充分利用计算机处理器的能...

    用户1665735
  • 各种基本算法实现小结(六)—— 查找算法

    ===================================================================

    阳光岛主
  • .Net如何统计在线人数

    统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的...

    阳光岛主
  • 获得主机域名及其IP和Port端口

       // 由主机域名获得其IP地址     protected void btnShowLocal_Click(object sender, EventArg...

    阳光岛主
  • 搜索引擎的原理

    搜索引擎蜘蛛(spider),可简称为蜘蛛,本意为搜索引擎机器人(robot),称为蜘蛛的原因是将互联网比喻成蜘蛛网,将机器人比喻成了在网上爬行的蜘蛛,是搜索引...

    阳光岛主
  • C#连接数据库SQL(2005)

    SqlConnection mysqlconnection=new SqlConnection("Server=localhost; database=your...

    阳光岛主
  • c#中分割字符串的方法

    阳光岛主
  • 栈与堆的区别及其探讨

    一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据...

    阳光岛主
  • SQL 通配符及其使用

    "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只使用一个"_"表示.

    阳光岛主
  • C#读取文本文件和C# 写文本文件

    今天一个学生问我如何从一个文本中读取内容,如下是做的是控制台中的例子,在别的地方也是这个道理。

    阳光岛主

扫码关注云+社区

领取腾讯云代金券