let和const区别

Posted xifeng59

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了let和const区别相关的知识,希望对你有一定的参考价值。

let是块级的  var是函数级    (JS以前只有全局的和函数级的)

‘use strict‘
//{
//    var a = 12;
//    let b = 15;
//}
//console.log(a,b); //b is not defined  因为b在块级范围内是有作用的

//第一种方法访问
//{
//    var a = 12;
//    let b = 15;
//    {
//        console.log(a,b);  // 12  15 
//    }
//}
//第二种方法访问
let b;
{
    var a = 12;
    b = 15;
}
console.log(a,b);  // 12  15 

泄密:

//for (var i=0; i<5;i++) {}
//console.log(i) // 5  var是函数作用域  所以下面可以访问到
for (let i=0; i<5;i++) {}
console.log(i) // i is not defined 因为let是块级的  只能在for循环内才能被访问到

提升:

function f() {
    console.log(a); //undefined
    var a = 12;
}
f();
在f()内部,其实做了一个提升 将var a 提升了==function f() {
    var a;
    console.log(a); //undefined
    a = 12;
}
f();
如果用let的话将不被提升
function f() {
    console.log(a); //a is not defined
    let a = 12;
}
f();

临时失效区

var a = 12;
function f() {
    console.log(a);
    let a; //a is not defined  因为函数也是个块级 外部有个a 内部也有个a的时候  外部的失效
}
f();

代替立即执行

//var config = (function(){
//    var config = [];
//    config.push(1);
//    config.push(2);
//    config.push(3);
//    return config
//})();
//console.log(config) //[ 1, 2, 3 ]
let config;
{
    config = [];
    config.push(1);
    config.push(2);
    config.push(3);
}
console.log(config) //[ 1, 2, 3 ]

const使用

const a = 12;
a = 15
console.log(a) // Assignment to constant variable.
const a = {
    name: ‘xxx‘
};
a.name = ‘yyy‘
console.log(a) // { name: ‘yyy‘ }

const这个常量并不是指对象本身不可以修改,而是指常量所指的内存地址不可以修改。

var let的物理指针可以随意修改,而const不行,但物理指针的那个对象是可以修改的。

如果加了Object.freeze(a);后,对象也将不可修改。

 

以上是关于let和const区别的主要内容,如果未能解决你的问题,请参考以下文章

var,let,const的区别和用法

ES6中的let 和 const 命令区别?

在js中let和const,var的区别

Let和Const区别,详细版本

Let和Const区别,详细版本

var let const 的区别