zoukankan      html  css  js  c++  java
  • 变量提升

    变量提升的原因

    JS引擎读取代码时,分为两步,第一步是对整个JS代码进行解析读取,第二步是进行代码的执行。

    在代码执行之前,浏览器的解析器遇到变量名和函数声明,将它们提升到当前作用域的最前面。

    //变量提升
    console.log(a);
    var a = "hi";
    console.log(a);
    
    //==>
    
    var a;
    console.log(a);
    a = "hi";
    console.log(a);
    
    //函数提升
    console.log(a);    //f a()
    console.log(b);    //undefined
    function a() {
      console.log('hi');  
    }
    var b = function() {
      console.log('ok');  
    }
    
    //==>
    
    function a() {
        console.log('hi');
    }
    var b;
    console.log(a);
    console.log(b);
    b = function(){
        console.log('ok');
    }
    
    //函数提升会优先于变量提升,且不会被同名的变量覆盖,如果这个同名变量已经赋值了,那函数变量会被覆盖
    console.log(a);    //f a() {...}
    console.log(a());    //2
    var a = 1;
    function a() {
      console.log(2);  
    }
    console.log(a);    //1
    a = 3;
    console.log(a());    //报错,现在的函数a已经被赋值过后的变量a给覆盖了,无法再调用a()
    
  • 相关阅读:
    HTML--1标签表格
    HTML--4格式布局
    HTML--3css样式表
    快速制作网页的方法
    表单
    表单练习——邮箱注册
    斐波那契数列
    0125 多线程 继承Thread 练习
    Hash(哈希)
    [COI2007] [luogu P1823] Patrik 音乐会的等待 解题报告 (单调栈)
  • 原文地址:https://www.cnblogs.com/peekapoooo/p/14436560.html
Copyright © 2011-2022 走看看