变量声明提前

      /*
            当前作用域内的声明都会提升到作用域的最前面,包括变量和函数的声明
            注意: 只是提升声明 不提升赋值和函数表达式的函数体
            优先级: 语言内置(this、 arguments) ->  形参 -> 函数声明 -> 变量声明 
            根据优先级 后声明的会覆盖前面声明的同名变量 不管其类型是什么
      */
        var hello="hello";
        (function(){
            console.log(hello);
            var hello="hello world";
        })(); // 输出 undefined


        // 以上代码等价于
        // var hello="hello";
        // (function(){
        //  var hello;  // 所以是undefined
        //  console.log(hello);
        //     hello="hello world";
        // })();
这也就是为什么js代码编写过程中, 特意将变量放在函数体的顶部,而不是将声明靠近放在使用变量之处。 这种做法使得源代码非常清晰的反映了真实的变量作用域和执行顺序。

转载于:https://www.cnblogs.com/mushishi/p/5804746.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值