js运行机制的小问题

  下面这段代码,就是变量提升最好的例子。
  为什么说是最好呢?
  首先,它有关变量提升,通俗来说就是显示使用后定义。
  再者,变量提升不仅有关于变量,函数也会被提升,它还涉及到变量和函数被提升的先后顺序。
  现在我会为大家演示 x=5;var x; 和 var x=5;之间的区别
  首先,我们要知道js中的变量提升。JavaScript 只有声明的变量会提升,初始化的不会。
这是声明,不管在你使用前还是后,它在解析时都会被放在window对象下。当检测到你赋值或使用时,自然而然不会报错。

var x;

 而下面这个,叫做初始化,它不会被提升。

var x=5;

=====================分割线========================
其次,看下面这一段代码

        window.onload=function(){

        var x = 5; // 初始化 x
             // 声明 y
            y = 5;
        elem = document.getElementById("demo"); // 查找元素
        elem.innerHTML = x + " " + typeof y;           // 显示 x 和 y

           // 设置 y 为 7
            var y;
            function y(){
                return 7;
            };
        }

 他的输出结果为 5 number,也就是说,y在这里是一个数值型变量。而在他之后声明的函数被覆盖了(js没有重载这一说)
!!!!
 常识,后声明的函数应该覆盖先声明的变量。但是这里却不能用这一理论解决。
 我们知道,声明的函数也会被提升,他的优先级高于变量,所以它又被变量覆盖。
 小提示:赋值函数不会被提升哦,就算先复制在来一个 var 他也不会被提升。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值