第一节 块级声明 let const
2018-03-16 09:40
85 查看
块级声明变量 let
一个函数内部被一对花括号包裹
禁止重复声明,但在嵌套的作用域中可以,因为没有变量提升了嘛。
不会进行变量提升,如需要,需手抖在函数体头部声明变量。
声明常量const
与let一样都是块级声明变量const用来声明常量,一旦声明不可修改
必须在声明的时候被初始化,否则运行的时候报错
当使用const声明对象的时候,会阻止变量绑定,但是不会阻止修改对象成员。
与let一样不可以被重复声明。
const的本质是保证变量指向的内存地址不可变。简单数据类型,值就保存在那个地址中。但是符合数据类型变量保存的是一个指针。指向对象数组保存的地址。该指针不可变,但是对象数组是可变的。
暂时性死区(TDZ)
在代码快中使用let
const声明变量常量,会造成暂时性死区,即在执行到该声明语句之前,是无法访问该变量/常量的,即使是
typeof也会报错。特备注意是在代码块中会存在此特性
在代码块内使用
let
const声明的变量常量,在代码快外使用
typeof不会报错
再循环中使用let const
在循环内使用let声明
i避免在外面访问到
巧妙使用let 实现闭包的功能
for循环中不要用
const声明’i’ 在进行
i++时报错。
在
for-in
for-of循环中使用不会报错
全局块级绑定
使用var声明的全局变量会挂载到
window对象下,容易造成覆盖原对象中的成员。使用
let
const声明的全局变量不会挂载到
window对象下。
最佳实践
在默认情况下使用const,而只在你知道变量值需要被改变的情况下才使用
let这在代码中能确保基本层次的不可变性,有助于防止某些类型的错误。
相关文章推荐
- 一个经典的js中关于块级作用域和声明提升的问题
- js 全局变量、局部变量的作用域;变量声明提前;无块级作用域
- [JavaScript]使用块级作用域声明对象时要注意的一个问题
- mabatis学习之前今日内容介绍 1、final 关键字 2、static 关键字 3、匿名对象 4、内部类 5、包的声明与访问 6、访问修饰符 7、代码块 第一节课 ###01(面向对象)fin
- ES6 let const块级作用域以及ES5 var声明对比
- javascript中不存在块级作用域,所以要小心使用在块级作用域中的函数声明所带来的作用域混乱.
- ES6之块级作用域与函数声明--读书笔记
- HTML5+CSS3-第一节(文档类型声明、新增标签)
- javascript 没有块级作用域 JavaScript声明全局变量三种方式 及
- let声明和块级作用域
- 父类无法见子类方法,除非声明为虚
- C语言之复杂声明
- JS第一节表格
- 详解变量声明加 var 和不加 var 的区别
- 关于博客转移的声明
- <!DOCTYPE html>声明
- HTML的块级元素以及内联元素
- 变量定义和变量声明的区别
- 声明数组指针
- 再调用函数时需要对函数进行声明