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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值