块级作用域的补充

133 阅读2分钟

以前的时候使用var 来定义循环的条件

不在推荐使用var 来变量这样的一个变量了

确实是可以进行定义的

遍历三次,会形成三层的作用域

不是进行重复的定义,因为用的还是原来的i

第一次定义的i 和 第二次定义的i 是不同的,因为是分别定义的i

这里的i 会进行++

在for循环中是不能使用const 来定义 i的

因为程序执行的时候会进行++ 的操作,但是const 只能进行一次初始化,就不能对它进行赋值了,所以这里是错误的

const 用来修饰不要修改的配置文件

在es6 中有另外一种对于数组的遍历

使用for...of 用来遍历对象,后面在讲迭代器

使用for.. of 来遍历数组

案例

let num = [
  { name: '星际传说', time: '120分钟' },
  { name: '奥奇传说', time: '60分钟' },
  { name: '李哥', time: '60分钟' }
]

// 使用普通的for循环进行遍历
for (let i = 0; i < num.length; i++) {
  console.log("电影名是:" + num[i].name);
  console.log("时长:" + num[i].time)
}

// 使用es6增强型的for循环
/*
 这里取出的是每一个item(项)
*/
for (let key of num) {
  console.log(key.name);
  console.log(key.time)
}

image.png

使用的是node

for of 是進行了迭代,将每一项取出来,会将里面的值赋值给我

这里的写法可以使用const

增强型的写法

使用for of

暂时性的死区(TDZ)

image.png

这个叫做TDZ

image.png

在初始化项目的时候,在if中使用这样的变量

在一个代码中,如果使用let const 声明的变量,在访问之前,都是不能进行访问的

只要在内部声明了一个变量,在执行打印变量的时候,会有暂时性死区

在变量没有定义进行使用,是不能被访问的

先声明,后使用

let const var 的选择

var 体现出很多的特殊性

var 不是一个好的东西,都是历史残留的问题

在设计之处的时候,是有缺陷的,这些东西不是好的东西

编写更加规范的代码

会将里面的es6 的代码转换成 es5的代码,尽量使用list 和 const,推荐使用const

如果不想进行修改的话,使用const