const不能从字面上来理解,他不能修改的是栈内存在的值和地址。

使用const声明的是常量,在后面出现的代码中不能再修改该常量的值。

怎么理解栈内存在的值和地址呢?就要从javascript的类型说起:
基本类型 Boolen, Number, String 是把直接值直接存在栈内
引用类型 Object(Function, Array ....)是把值存在对应的地址中

const b = 2;//正确

// const b;//错误,必须初始化

console.log('函数外const定义b:' + b);//有输出值 函数外const定义b:2

// b = 5; //错误,Assignment to constant variable.

const:

  1. 如果定义了一个基本数据类型,比如number,string 。。。 这样的话是常量,绝对不可改变。

  2. 如果用const去定义一个Object或者Array,只能说Object或者Array本身是常量,但是还是可以他们添加删除或修改属性或者元素的。。。

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

var array = [1, 2, 3];
var q = 1; array = array.map((v) => {
return v + q;
}) console.log(array); //[2, 3, 4]
var array = [1, 2, 3];
let q = 1; array = array.map((v) => {
return v + q;
}) console.log(array);
//Uncaught SyntaxError: Identifier 'q' has already been declared
if (xxx) {
let a = 1;
} console.log(a); // Uncaught ReferenceError: a is not defined if (yyy) {
console.log(a); // Uncaught ReferenceError: a is not defined
]

var 和 let 的区别在于作用区块。

The let statement declares a block scope local variable, optionally initializing it to a value.[1]

The variable statement declares a variable, optionally initializing it to a value.

以上是 MDN 的定义,直白地说,var 的作用域是当前 scope 的所有子作用域,包括当前作用域中声明或调用的函数或是 while / for / if / try-catch 语法区块。

SO~建议:

为了让自己的代码可读性更好,赋值之后不会再做修改了就用const,如果后边还会修改就用let,不建议使用var

const、let、var的区别的更多相关文章

  1. ES6中let、const和var的区别

    一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = ...

  2. ES6新增语法(一)——let、const、var的区别

    ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...

  3. let、const和var的区别

    1.let是块级作用域,函数内部使用let定义后,对函数外部无影响. <!DOCTYPE html> <html lang="en"> <head&g ...

  4. let、const、var的区别

    1.使用var声明的变量,其作用域为全局或者该语句所在的函数内,且存在变量提升现象. 下面使用node.js演示,也可以插入到html文件中使用以下代码 var a = 10; function te ...

  5. 浅谈ES6——ES6中let、const、var三者的区别

    在了解let.const.var的区别之前,先了解一些什么是es6 Es6 全称ECMAscript 是JavaScript语言的一个标准,其实Es6本质就是JavaScript的一个版本,为什么叫E ...

  6. JavaScript中const、var和let区别浅析

    在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...

  7. js中const,var,let区别

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. co ...

  8. JS中const、var 和let的区别

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  9. let const var的区别与作用

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  10. js中const,var,let区别(转载)

    js中const,var,let区别 来源:https://www.cnblogs.com/zzsdream/p/6372729.html 今天第一次遇到const定义的变量,查阅了相关资料整理了这篇 ...

随机推荐

  1. PorterDuffXfermode 图像混合技术在漫画APP中的应用

    此文已由作者游葳授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 写在开头 随着应用开发的深入,视觉同学在完成了页面的基本设计后,再也按耐不住心中的寂寞,开始对各种细节不满意, ...

  2. CodeForces 665B 【水-暴力】

    题意(来自网络): 现在有k件商品,每个商品的位置已经告诉你了 现在有n个人,每个人有m个需求,每个需求就是要把第a[i][j]个物品拿到第一个位置来 他的代价是pos[a[i][j]] 问你所有代价 ...

  3. laravel V层

    V层 即视图层  也就是常用的html页面  但在laravel里后缀为php 视图层路径resources/views/视图名称.php

  4. Validation(4)-临时

    使用Hibernate-Validator优雅的校验参数 2019年01月01日 13:17:31 余生之君 阅读数:337    版权声明:本文为博主原创文章,未经博主允许不得转载. https:/ ...

  5. 生产者消费者 java.util.concurrent.lock包

    package com.mozq.thread.producer2; import java.util.concurrent.locks.Condition; import java.util.con ...

  6. B. Lecture Sleep( Educational Codeforces Round 41 (Rated for Div. 2))

    前缀后缀和搞一搞,然后枚举一下区间,找出最大值 #include <iostream> #include <algorithm> using namespace std; ; ...

  7. Java - 怎么通过环境变量来切换jdk版本

    问题与分析 我在本地安装了1.7和1.8两个版本的jdk,此时我的JAVA_HOME环境变量配置的是jdk1.8,在cmd窗口输入java -version发现报错如下: C:\Users\Lewis ...

  8. 63. 不同路径 II

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 现在考虑网 ...

  9. BZOJ1108(思路)

    题目本质:因为只能往南和往东走所以不管怎么组合方案结果都是一样的Orz……我太菜了想不到嘤嘤嘤 #pragma comment(linker, "/STACK:1024000000,1024 ...

  10. 关于JVM的一些东西

    1.在JDK1.6(HotSpot虚拟机)及之前,运行时常量池(属于方法区的一部分)是永久代的,而在JDK1.7之后运行时常量池(里面用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进 ...