zoukankan      html  css  js  c++  java
  • let 和 const

    let命令

    1.let命令只在所在的代码快内有效

    {
            let a = 'hello world'
            console.log(a)      //hello world
    }
        console.log(a)  //Uncaught ReferenceError: a is not defined
    

    2.let 声明的变量不可重复定义

    {
            let a = 0;
            let a = 'hello world'; //Uncaught SyntaxError: Identifier 'a' has already been declared重复定义变量
    }
    

    3.不存在变量提升,必须先声明后使用

    console.log(aa); //Uncaught ReferenceError: aa is not defined
    let aa = '11';
    

    4.for循环中let和var的区别

    for(var i=0; i<10; i++){
    
        }
        console.log(i);   //10
        for(let i=0; i<10; i++){ //此处let声明的i是父作用域
            let i = 'abc';       //内部let声明的是子作用域,暂时性死区
            console.log(i); //abc
        }
        console.log(i); // Uncaught ReferenceError: i is not defined
    

    “暂时性死区” 只要块级作用域内存在let命令,它所声明的这个变量就不在受外部的影响,本质是只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
    外层作用域无法读取内层作用域的变量
    内层作用域可以定义外层作用域的同名变量

    const命令

    1.const声明一个只读的常量,一旦声明,就必须立即初始化,常量的值就不能改变。

    const a = 'hello world';
        console.log(a); // hello world
        a = 123; //Uncaught TypeError: Assignment to constant variable.改变常量的值会报错
    

    2.const作用域与let命令相同,只在声明所在的块级作用域内有效。
    3.不可重复声明

    本质: const实际上保证的并不是变量的值不的改动,而是变量指向的那个内存地址不得改动

    • 简单类型的数据(数值,字符,布尔),值就是保存在变量指向的内存地址中。
    • 复合类型的数据(数组,对象),变量指向的内存地址保存的知识一个指针。
  • 相关阅读:
    android的原理,为什么我们不需要太多的剩余内存(转)
    简单制作RPM二进包实例(转)
    电源相关术语
    Linux 查找指定文件并删除
    Linux内核中的内存屏障(转)
    分压、分流原理
    Linux内核入门—— __attribute__ 机制
    如何手工释放linux内存
    多核编程中的负载平衡难题(转)
    linux2.6.26内核中ARM中断实现详解(转)
  • 原文地址:https://www.cnblogs.com/hukeer/p/8063873.html
Copyright © 2011-2022 走看看