美文网首页步步为营之JavaScript
JS-基础知识-let与const

JS-基础知识-let与const

作者: 刘淘 | 来源:发表于2020-06-11 23:05 被阅读0次

1. let与const

var声明的变量会挂载在window上,而let和const声明的变量不会
1.为了解决JS变量提升的隐患,将JS变量限定在某一个指定的作用域范围内,引入let定义变量
2.对"先使用后声明"的let变量,JS将会解析编译不通过,将会抛出Uncaught ReferenceError,也不会执行对应的上下文

image.png

3.在函数内部的let变量仍然遵循"先声明后使用"原则,如果当前函数体中未声明,则往函数外向上查找(找到则使用,未找到则报错)

image.png
image.png
(小彩蛋:请注意同样都是未声明先使用 let var提示不同哦)

4.在函数参数中仍然遵循"先声明后使用"原则, 参数也是依次"从左至右,从上至下"原则声明和赋值


image.png
image.png

2. var let const 异同点

相同点:
三者都遵循“先声明后使用”原则, 函数内部优先查找内部是否声明,未声明可访问外部变量

不同点:
1.var/let变量可单独声明,之后再某个时刻再赋值(且可多次赋 值);const常量必须声明同时并赋值,且之后不可再次赋值(无法改变)
2.使用var定义的变量(或函数)没有块作用域概念,使用let/const定义的变量(或函数)是存在块作用域的
3.使用var定义的变量(或函数)可重复声明,在同一作用域内使用let/const定义的变量(或函数)是不能重复声明的

推荐点:
优先使用const来定义,如果变量值确实可能会发生变化,则考虑使用let(如for循环迭代值), 尽量不使用var来定义变量

注意点:
⚠️const如果是基本类型,const变量不能改变其内存地址

image.png
⚠️对于引用类型而言,内部成员仍然可改变
image.png
如果不希望引用类型的内部成员被外界篡改,可使用"对象冻结"(Object Freeze)技术
image.png

相关文章

  • JS-基础知识-let与const

    1. let与const var声明的变量会挂载在window上,而let和const声明的变量不会1.为了解决J...

  • 关于JS中的定义变量

    js-变量定义关键字const,var,let var定义的变量可以修改,如果不初始化会输出undefined,不...

  • ES6语法

    const 与 let变量

  • let和const

    let/const(常用) let和var 区别 let,const用于声明变量,用来替代老语法的var关键字,与...

  • ES6_var、let与const

    var,let 与 const var 申明变量。 let 申明变量,更完美的 var。 const 申明常量(物...

  • ES6

    let , const const 与 let 的区别:1. 声明时必须赋值 2.只能赋值一次 let 存在暂时...

  • 我读ES6--变量声明

    1.关于var和let、const let、const与var一样,都是用来声明变量,但都有其特殊的用途。let ...

  • ES6

    let const let const 没有变量提升let 块级作用域const 常量 模板语言, restfu

  • ES6-let & const

    一. let与var let 是块级作用域;var 是函数级作用域。 二. let 与 const let与con...

  • JavaScript 变量宣告 var let const

    宣告变量有三种方式: var let const var 与 let、const 的主要差异在于作用域。 作用域(...

网友评论

    本文标题:JS-基础知识-let与const

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