首页 > Web开发 > 详细

JS的变量提升

时间:2020-04-02 11:51:55      阅读:62      评论:0      收藏:0      [点我收藏+]

变量提升

var声明的变量。

console.log(v1);
var v1 = 100;
function foo() {
    console.log(v1);
    var v1 = 200;
    console.log(v1);
}
foo();
console.log(v1);

输出结果:

//undefined
//undefined
//200
//100

函数提升

声明函数的两种方式:

function bar () {}    //函数声明式
var foo = function () {}     //函数字面量式,这个和变量提升的结果是一样的,函数只是一个具体的值

但是函数声明式的提升现象和变量提升略有不同,具体如下:

console.log(bar);
function bar () {
  console.log(1);
}

输出结果:

技术分享图片

 

 执行顺序相当于:

function bar () {
  console.log(1);
}
console.log(bar);

函数提升是整个代码块提升到它所在的作用域的最开始执行

变量提升和函数提升的优先级问题

函数提升要比变量提升的优先级要高一些,且不会被变量声明覆盖,但是会被变量赋值之后覆盖。

console.log(a);    // f a() {console.log(10)}
console.log(a());    //  10
var a = 3;

function a() {
    console.log(10) 
}
console.log(a)   // 3
a = 6;
console.log(a());  // 报错:a is not a function;

执行顺序相当于

    var a = funtion () {
        console.log(10)
    }
    var a;
    console.log(a);    //  f a() {console.log(10)}
    console.log(a());  //  10

    a = 3;
    console.log(a)   // 3
    a = 6;
    console.log(a());   // 报错:a() is not a function;

 

JS的变量提升

原文:https://www.cnblogs.com/xjy20170907/p/12618605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!