美文网首页
let const var 区别

let const var 区别

作者: o_6b24 | 来源:发表于2021-11-22 11:06 被阅读0次

    1、声明后未赋值,表现相同

    (function() { 

         var varTest;

         let letTest;  

        console.log(varTest); //输出undefined 

        console.log(letTest); //输出undefined}

    ());

    2、使用未声明的变量,表现不同

    (function() {

      console.log(varTest); //输出undefined(注意要注释掉下面一行才能运行)

      console.log(letTest); //直接报错:ReferenceError: letTest is not defined

      var varTest = 'test var OK.';

      let letTest = 'test let OK.';

    }());

    3、重复声明同一个变量,表现不同

    (function() {

      var varTest = 'test var OK.';

       let letTest = 'test let OK.';

       var varTest = 'varTest changed.';

       let letTest = 'letTest changed.'; //直接报错:SyntaxError: Identifier 'letTest' has already been declared

      console.log(varTest); //输出varTest changed.(注意要注释掉上面letTest变量的重复声明才能运行)

      console.log(letTest);

    }());

    4、变量作用范围不同,表现不同

    (function() {

      var varTest = 'test var OK.';

      let letTest = 'test let OK.';

      {

        var varTest = 'varTest changed.';

        let letTest = 'letTest changed.';

      }

      console.log(varTest); //输出"varTest changed.",内部"{}"中声明的varTest变量覆盖外部的letTest声明

      console.log(letTest); //输出"test let OK.",内部"{}"中声明的letTest和外部的letTest不是同一个变量

    }());

    5、const定义的变量不可以修改,而且必须初始化

        const b = 2;//正确// const b;//错误

        必须初始化 console.log('函数外const定义b:' + b);//有输出    值// b = 5;// console.log('函数外修改const定义b:' + b);//无法输出

    change

    6、var定义的变量可以修改,如果不初始化会输出undefined,不会报错

    var a = 1;

    // var a;//不会报错

    console.log('函数外var定义a:' + a);//可以输出a=1

    function change(){

        a = 4;

        console.log('函数内var定义a:' + a);//可以输出a=4} \hange();

    function change(){

    a = 4;

    console.log('函数内var定义a:' + a);//可以输出a=4

    }

    change();

    console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4

    7、let是块级作用域,函数内部使用let定义后,对函数外部无影响

    let c=3;

    相关文章

      网友评论

          本文标题:let const var 区别

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