美文网首页js css html
const let var使用场景

const let var使用场景

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-11-21 09:13 被阅读0次

    第一,var有什么特点

    1,var定义的变量会预解析,简单的说就是如果变量没有定义就直接使用的话,JavaScript回去解析这个变量,代码不会报错,只会输出undefined

    console.log(a);/undefined
    var a = 1;
    

    2,var定义的变量可以反复去定义,当然后面的会覆盖前面的

    var a = 1
    var a = 2
    console.log(a) // 2
    

    3,var在循环中使用的时候,循环体外依然可以使用

    //var在循环体外依然可以使用
    for(var i = 0; i < 5; i++){
    }
    console. log(i);// 5
    

    4,在循环绑定事件过程中,var定义的变量无法保存,循环会在瞬间执行完

    for(var i = 0; i < 5; i++){
      setTimeout(()=>{
        console. log(i);// 5 5 5 5 5
      },100)
    }
    

    **var声明的全局变量可以作为window的属性

    第二,let声明的变量的特点

    1,let定义的变量不会预解析,必须先声明再使用,否则会报错(暂时性死区)

    console.log(b)
    let b = 2;
    //报错b is not defined
    

    2,let不能定义已经定义过的变量(无论之前是用var定义的还是let或者const定义的)
    3,let是块级作用域,函数内部使用let定义后,对函数外部无影响,简单说就是在一个{}里面生效
    4,由于let是块级作用域,在循环绑定事件过程中let会在这个循环中生效,再次循环时let会重新定义生效
    所以我们在判断是使用var好还是let好就会产生疑问?
    当然是let 好,当在放弃使用var 全局变量使用完并且不设置为null会导致内存泄漏,非要使用var可以放在自执行函数中,防止内存泄漏(延展出垃圾回收和内存泄漏得问题)

    第三,const声明的变量的特点:

    1,const定义的变量不会预解析,必须先声明再使用,否则会报错
    但是,在引用类型的数据里面,const的值是允许被修改的,这是因为const存储的是地址,值的内容可以变化
    什么时候用let ,什么时候用const?
    计算定义的变量使用let,let定义的变量相,存在栈内存中,
    定义一个函数表达式、对象、不变的值可以用const ,const 定义的常量存在堆内存
    下面做个总结,也就是大家需要思考的问题:ES6 提出了两个新的声明变量的命令:let和const,声明变量的方式这么多,我们究竟怎么选择更好呢?给大家建议使用的优先级:const > let > var
    首先const声明常量的好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改变量值所导致的错误,另外其实js编译器也对const进行了优化,可以提高代码的执行效率;

    另外let声明的变量没有预编译和变量升级的问题,先声明再使用其实更为规范,而let本身是一个块级作用域,很多时候我们在写代码的时候都希望变量在某个代码块内生效,也更为方便。

    相关文章

      网友评论

        本文标题:const let var使用场景

        本文链接:https://www.haomeiwen.com/subject/lfblxdtx.html