函数声明提升与变量提升

1.当在函数的作用域里定义一个和外部变量一样的名称的变量时,变量声明会提升至第一句,但是赋值则不变

var test="hello world";
function(){
  alert(test);
  var test="hello world again";
}();

上面这段代码会弹出undefined,为什么?其实上面这段代码就相当于:

var test="hello world";
function(){
  var test;  //变量提升至第一句,赋值不变
  alert(test);
  test="hello world again";
}();

2.函数声明首先被提升,然后才是变量

console.log(test);
function test(){
    //...
}
var test="hello world";

上面代码打印输出的是function test(){//...}这个函数,其实就是相当于:

function test(){}   //函数声明先提升
var test;              //变量提升,但是赋值则不变
console.log(test);
test="hello world";

以上。 哪里不对还请大神指正,共同学习,一起进步。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

运算优先级、结合性、求值顺序、副作用和顺序点

标题中这几个概念,是很多C/C++程序员在表达式上容易出问题或不清楚的地方,虽然这些概念在很多语言都有体现,但C里面特别明显,所以就以C语言为例子总结下 运算...

50170
来自专栏blackheart的专栏

[程序设计语言]-[核心概念]-03:控制流

0.概述 前面介绍了语言的演进以及一些基础概念后,从本篇开始进入了语言的核心问题中。这一篇讨论的是语言计算模型(大致可以用控制流来表述),大致如下7种: 顺序执...

214100
来自专栏AzMark

Python字符串

18250
来自专栏女程序员的日常

虚函数&多态

对于经常被问到的虚函数和多态的问题,发现百度百科回答得十分详细,所以自己在百度百科上的解释进行总结 一、虚函数 (1)虚函数简介:在某基类中声明为virtua...

23410
来自专栏pangguoming

全面理解面向对象的 JavaScript

前言 当今 JavaScript 大行其道,各种应用对其依赖日深。web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而...

400100
来自专栏Crossin的编程教室

【Python 第18课】 bool类型转换

昨天最后留的几句关于bool类型的转换,其中有一行: bool('False') print一下结果,会发现是True。这是什么原因? 因为在pytho...

24940
来自专栏数据派THU

收藏 | 应对程序员面试,你必须知道的8大数据结构

瑞士计算机科学家Niklaus Wirth在1976年写了一本书,名为《算法+数据结构=编程》。

10000
来自专栏zaking's

js算法初窥02(排序算法02-归并、快速以及堆排序)

18630
来自专栏程序员互动联盟

【编程基础】C++ Primer快速入门五:实用的模板库

除上篇博客介绍的基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类 型标准库。包括 string 和 vector,它们分别定义了字符串和矢量(集合)。s...

29950
来自专栏AI2ML人工智能to机器学习

Python的map函数理解四式

这个map函数是python的内嵌的函数, 那么如何手写一个自己的map函数, 实现内嵌map函数一模一样的功能呢?

11820

扫码关注云+社区

领取腾讯云代金券