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

最新文章

  1. LINQ系列:Linq to Object串联操作符
  2. JavaScript中绑定事件监听函数的通用方法addEvent() 和 事件绑定之bindEvent()与 unBindEvent()函数
  3. mac 10.9 安装 gevent
  4. Spring实现文件上传
  5. WOW.js – 在页面滚动时展现动感的元素动画效果
  6. SSRS 的简单使用(一)
  7. jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
  8. JS操作cookie以及本地存储(sessionStorage 和 localStorage )
  9. Error : L6218E: Undefined symbol downloadAddress (referred from nand.o).
  10. Using Git subtrees to split a repository
  11. PostgreSQL的 initdb 源代码分析之十一
  12. iOS application: how to clear notifications?
  13. PHP学习笔记三十三【自定义错误处理器】
  14. [一波低姿势的usaco除草记]
  15. Away 3d 基本属性
  16. poj 3468 A Simple Problem with Integers(线段树区间更新)
  17. 分享几个实用的Chrome扩展程序
  18. c/c++线性队列
  19. STL的注意事项
  20. 全排列-hdu1716

热门文章

  1. PYTHON实现DFS算法
  2. 使用fastadmin的页面异常模板
  3. JS中一个new到底做了哪些事情?
  4. eclipse打开jsp的方式怎么设置成默认
  5. svn基本命令
  6. axios 访问和返回拦截,token处理,返回异常统一处理
  7. 详细说明phpmyadmin连接,管理多个mysql服务器
  8. 服务器 未能加载文件或程序集“XXXX”或它的某一个依赖项。试图加载格式不正确的程序。
  9. Java之构造方法及this、super关键字
  10. mongodb 上限集合