码迷,mamicode.com
首页 > 其他好文 > 详细

let和const区别

时间:2019-10-12 19:12:10      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:函数   方法   访问   object   for循环   code   turn   func   let   

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区别

标签:函数   方法   访问   object   for循环   code   turn   func   let   

原文地址:https://www.cnblogs.com/xifeng59/p/11663073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!