• var let const


      重复定义 修改值 声明提升 块级作用域 循环
    var ×(function除外)
    let × ×
    const × ×(数组对象除外) × ×

    声明提升:var a = 1这句话会被浏览器读成 var aa = 1两句话执行,其中var a会在编译阶段就先执行了,而a = 1这段赋值代码会在原地等待执行阶段。

    var重复定义变量会覆盖之前的值,可以修改,var声明的变量的作用域是定义变量的整个函数

    function testVar(){
     var a = 0;
        if(true){ 
          var a =1;
          console.log(a)//输出1,两个a是同一个变量
        }
        console.log(a)//输出1
    }



    var temp = new Date();console.log(temp);
    function f(){
      console.log(temp);//输出undefined  外边的temp作用不到function中 内部的temp会被声明提升
      if(false){
        var temp = "hello";
      }

    }
    f();

    let不能重复定义变量也不能声明提升,let声明的变量的作用域是当前块

    function testLet(){
     let a = 0;
        if(true){ 
          let a =1;
          console.log(a)//输出1,两个a是不同的变量
    } console.log(a)//输出0 }

    const定义的变量只读不可修改,但是数组的对象除外

    const a={}; a.b=13;//不会报错 
    const arr=[]; arr.push(123);
    //不会报错
  • 相关阅读:
    题解[51nod1555] 布丁怪
    题解 [51nod1753] 相似子串
    题解[NOIP2017] 列队
    题解 [NOIP2015]运输计划
    题解 [APIO2014]连珠线
    题解 [ZJOI2010]基站选址
    [学习笔记] kmp
    RPC&ORM
    Spring
    常用工具
  • 原文地址:https://www.cnblogs.com/lovetl/p/13397843.html
Copyright © 2020-2023  润新知