0
点赞
收藏
分享

微信扫一扫

Javascript 变量声明提升和函数声明提升

young_d807 2022-03-26 阅读 60
javascript

1、变量声明提升

在C++、java中必须先声明变量才能在后面使用这个变量,但是在JS中,无论在该作用域中的哪个位置声明变量,都会被提升到顶部,但是变量定义不会跟着提升;

console.log(person1)//undefined变量没有定义
console.log(person2)//person2 is not defined变量没有声明
var person1

var person1虽然声明在最后,但是在编译时被提升到了顶部;

var person1
    console.log(person1)//undefined变量没有定义
    console.log(person2)//person2 is not defined变量没有声明

这两段代码在编译后是一样的;

    var person1="chen"
    console.log(person1)//chen
    console.log(person2)//undefine
    var person2="wu"

person2声明在最后,但是由于声明提升,所以不会出现变量没有声明的错误,但是由于定义不会提升,所以person2的定义依然在最后,所以console.log(person2)运行时person2是还没有定义的;

2、函数声明提升

    p()//undefine
    function p(){}
    p=function(){
        var person1="chen"
        console.log(person1)
    }
    function p(){
        var person1="chen"
        console.log(person1)
    }
    var p=function(){
        var person2="wu"
        console.log(person2)
    }
    p()//wu

上面两段代码说明函数声明会提升,但是函数定义不会提升,定义的时候是在哪里,编译后就在哪里;

举报

相关推荐

0 条评论