函数声明提升与变量提升

简介: 1.当在函数的作用域里定义一个和外部变量一样的名称的变量时,变量声明会提升至第一句,但是赋值则不变var test="hello world";function(){ alert(test); var test="hello world a...

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";

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

目录
相关文章
|
2月前
|
编译器
C 中的变量声明
C 中的变量声明。
12 0
|
5月前
|
存储 Cloud Native Linux
C++ const关键字
C++ const关键字
|
14天前
函数声明与函数表达式的区别是什么?
函数声明与函数表达式的区别是什么?
9 1
|
1月前
|
C++
C++ 变量作用域
C++ 变量作用域
|
2月前
|
编译器
函数声明
函数声明。
88 1
|
5月前
|
JavaScript 前端开发
函数声明与函数表达式的区别
函数声明与函数表达式的区别
12 0
|
5月前
|
存储
函数声明与函数表达式的区别?
函数声明与函数表达式的区别?
19 0
|
6月前
|
编译器 C语言
C中的变量声明
C 中的变量声明。
45 3
|
程序员 C++
C++之const关键字
关于C++的const的爱恨情仇
88 0
|
JavaScript
let 变量提升
let 变量提升