美文网首页
ES6中的const及临时死区(Temporal Dead Zo

ES6中的const及临时死区(Temporal Dead Zo

作者: 莫晓白 | 来源:发表于2017-10-19 23:54 被阅读0次

const声明的是常量,声明的同时必须进行初始化。

const value = '莫小白';
console.log(value);
图片.png
const value;
value =  '莫小白'
console.log(value);
图片.png

在声明常量的同时必须赋值,不可声明变量后在赋值。

const声明的常量,只在当前作用域才能被访问,除了这个作用域常量将会被销毁

var isTrue = true;
if( isTrue){
        const value  = '莫小白';
        console.log(value);
 }

    console.log(value);
图片.png

在if语句之外value就会被系统销毁

如果说,我们需要使用const声明一个变量,而且后期需要修改这个变量,我们应该怎么办。我们需要将这个变量声明成一个对象,我们可以修改这个变量的属性。

const person = {
        name:'莫小白'
    };
    console.log(person.name);
    person.name = '于小沫';
    console.log(person.name);
图片.png

我们可以更改属性值,但是,我们不可以修改绑定!!!

const person = {
        name:'莫小白'
    };
    console.log(person.name);
    person = {
        name:'于小沫'
    };
    console.log(person.name);
图片.png

临时死区
因为let 和 const 并不会声明提前,所以即使我们使用typeof访问变量也会报错

console.log(typeof value);
let value = 'js';
图片.png

在js中,const和let声明的变量,会保存到TDZ中。只有当程序运声明变量后,变量会从TDZ中移出,变量才可以正常访问。举个例子

function getType(isTrue){
        console.log(typeof value);
        if(isTrue){
            let value = '莫小白';
            console.log(typeof value);
        }
        console.log(typeof value);
    }
    getType(true);
图片.png

第一个consle在变量value的代码块外执行的,此时value并不存在TDZ中。这也就是说不存在value这个绑定,typeof会返回一个 undefined 。第二个console因为value已经被创建可以正常访问。第三个console因为在value的代码块外执行的,且这时候value已经被销毁,所以返回一个 undefined 。

相关文章

  • ES6中的const及临时死区(Temporal Dead Zo

    const声明的是常量,声明的同时必须进行初始化。 在声明常量的同时必须赋值,不可声明变量后在赋值。 const声...

  • 深入理解 ES6

    let && const let与var的声明用法相同,但是多了一个临时死区(Temporal Distonrti...

  • let和const命令

    let和var的一些区别 var存在变量提升,let不存在变量提升 暂时性死区(temporal dead zon...

  • Javascript 面试经典(一)

    js暂时性死区 在ES6中新增的定义变量的关键字let和const,会带来一个暂时性死区的问题,暂时性死区简单来讲...

  • Javascript面试常问点

    js暂时性死区 在ES6中新增的定义变量的关键字let和const,会带来一个暂时性死区的问题,暂时性死区简单来讲...

  • let

    使用let的注意事项 1.块级作用域2.同一作用域中不允许重复声明3.暂存死区(Temporal dead zon...

  • 详解ES6暂存死区TDZ

    文章中如有不当的地方请在评论区留言~ 加油~ 一起进步~ 什么是暂存死区 暂存死区TDZ(Temporal Dea...

  • ES6相关知识点

    var、let 及 const 区别 涉及面试题:什么是提升?什么是暂时性死区?var、let 及 const 区...

  • ES6学习笔记_let和const

    let 不存在变量提升 在同一作用域内,不允许重复声明 暂时性死区ES6规定,在区块中存在let和const命令,...

  • ES6 中的类与自定义类的不同之处

    《深入理解ES6》阅读随笔 类声明不会被提升,它跟 let 类似,也是存放在临时死区中; 在类中会自动按照严格模式...

网友评论

      本文标题:ES6中的const及临时死区(Temporal Dead Zo

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