JavaScript ES6 - let 与 const 使用方及与var对比

ES6 语法: let 与 const

本文主要讲解 let / const / var 关键字相关内容, 解释了它们的基本用法以及相关需要注意的知识点; 其中还包含一些作用域的相关概念 。

let / const / var 它们的作用基本上是一致的, 但是它们还是有很多区别的; 下面我们就来看看他们之间的区别与作用 。

1. 作用域

1. 在 ES6 之前, 也就是 ES5 中, 有两个作用域
   1. 全局作用域
   2. 函数作用域
   
2. 在 ES6 中新增加了 '块级作用域' {} 。

2 let 声明一个变量

// let 声明一个变量
function test1() {
  let num1 = 1111
  var num2 = 2222
  console.log('此时 let 与 var 没有任何区别: ', num1, num2);
}
// 此时使用 let 与 var 没有任何区别
test1()
// 打印结果:
// 此时 let 与 var 没有任何区别:  1111 2222

2.1 块级作用域

// ES6 let
function test2() {
  for (let index = 1; index < 3; index++) {
    console.log('块级作用域内: ', index);
    // 打印结果:
    // 块级作用域内:  1
    // 块级作用域内:  2
  }
  /**
   * 1. 此处打印 'index' 报错: ReferenceError: index is not defined (报错的意思是: 引用错误, 'index' 没有找到)
   *    1. 这里体现的是: let 声明的变量, 只在自己的块级作用域内有效 。
   * 2. ES6 是强制开启严格模式的; 在 ES5 中使用严格模式需要设置 "use strict";
   *    1. 在严格模式下, 变量未声明不能引用, 否则就会报错 'ReferenceError' 。
   */
  // console.log('块级作用域 -外- 循环外打印 index: ', index);
  // 打印结果:
  // Uncaught ReferenceError: index is not defined
}
test2()



// 与 ES5 对比
function test3() {
  for (var i = 1; i < 3; i++) {
    console.log(i);
  }
  console.log('循环外打印 -- 得到最终结果 i: ', i);
  // 打印结果:
  // 循环外打印 -- 得到最终结果 i:  3
}
test3()

2.2 使用 let 时, 不能重复声明变量

// 使用 let 时, 不能重复声明变量
function test4() {
  /**
   * 友情提示:
   * 1. 报错: Error: Cannot find module "./class/1-let与const命令.js"
   *    1. 有可能是文件没有编译成功
   */
  let num = 1
  let num = 2
}
// test4()
// 执行结果:
// 报错: Error: Cannot find module "./class/1-let与const命令.js"

3. const 关键字

/**
 * const 关键字
 * 1. const 声明一个 '常量' (注意: 是常量而不是变量)
 *    1. 常量的含义就是不能修改(不严谨)
 *    2. const 也是有块级作用域的
 *    3. const 声明的时候必须赋值
 */
function last1() {
  const num1 = 3.1415926
  console.log(num1);
}
last1()

3.1 const 声明的常量不能修改(不严谨)

function last2() {
  const num2 = 3.1415926
  /**
   * 报错:  SyntaxError: "num2" is read-only (意思就是说 'num2' 是一个只读属性, 不能修改)
   */
  // num2 = 3333
  // console.log('常量不能修改 num2 : ', num2);
  // 打印结果:
  // 报错: Error: Cannot find module "./class/1-let与const命令.js"
}
last2()

3.2 const 声明时必须赋值

function last3() {
  /**
   * 报错: SyntaxError: Unexpected token (118:12) (意思是: 不完整)
   */
  const num3;
  // num3 = 3333 // 这里写与不写都会报相同的错
  console.log('声明时必须赋值 num3 : ', num3);
}
last3()

3.3 const 不能修改这一句是不严谨的

function last4() {
  const PI = 3.14
  const num4 = {
    newNum: 4444
  }

  // 对常量 num4 做一个修改
  num4.b = '修改常量: 增加一个值'
  num4.newNum = '修改常量: 常量对象中已有的值'

  /**
   * 这里的修改之所以成功, 是因为 num4 常量是一个对象, 对象是 '引用类型' (引用类型: 最后的返回值是对象存储的内存中的指针)。
   * 也就是我们声明的 num4 是指向这个对象的存储的指针, 这个指针是不变的, 但是对象本身是可以变得 。
   */

  console.log('const 不能修改, 这一句是不严谨的 num4 : ', PI, num4);
}
last4()

如果对你有所帮助,喜欢的可以点个关注; 文章会持续打磨 。
有什么想要了解的前端知识吗? 可以在评论区留言, 会及时跟进分享所相关内容 。
整理知识点不易, 每次都是在工作繁忙之余夜深人静之时整理, 无论知识点是大是小, 都会验证后再分享, 以防自己发表的文章给大家造成误导 。如有问题还望不吝赐教,本人会及时更改 (本文原创, 如需转载,请注明出处) 。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343