学习记录1---ES6(蓝桥杯考点 let const)

目录

前言 

   由于最近在准备蓝桥杯比赛,所以就想着做一下笔记,方便以后查看啦

 考点

 1.ES6考点

 2.考题形式​编辑

 3.如何备考​编辑

思考 var 关键字的缺点

1.变量提升机制的问题

2.变量重复声明的问题(待定)

3.非块作用域的问题

实验总结

 最后


前言 

   由于最近在准备蓝桥杯比赛,所以就想着做一下笔记,方便以后查看啦

 考点

 1.ES6考点

 学习记录1---ES6(蓝桥杯考点 let const)_第1张图片

 

 2.考题形式学习记录1---ES6(蓝桥杯考点 let const)_第2张图片

 

 3.如何备考学习记录1---ES6(蓝桥杯考点 let const)_第3张图片

 

思考 var 关键字的缺点

1.变量提升机制的问题

还记得在 JavaScript 中我们学过定义变量的方式吗?

我们声明变量的唯一方式是使用 var 关键字,但其实使用 var 关键字定义变量会遇到一些麻烦,不知道同学们在开发代码时,是否遇到如下情景。

function getNumber(isNumber) {
  if (isNumber) {
    var num = "7";
  } else {
    var notNum = "not number!";
    console.log(num);
  }
}
getNumber(false);

我们在控制台可以看到以下报错:

很奇怪吧!我们明明在函数中定义了 num 变量,为什么会说没有定义呢?

其实在 JavaScript 中有一个提升机制,就是无论你在哪里使用 var 关键字声明变量,它都会被提升到当前作用域的顶部。在运行 getNumber 函数时,实际上执行结构是下面这个样子。

function getNumber(isNumber) {
  var num;
  var notNum;
  if (isNumber) {
    num = "7";
  } else {
    notNum = "not number!";
    console.log(num);
  }
}
getNumber(false);

因为在开头定义变量时,没有给 num 变量赋任何值,并且 getNumber 传入的是 false,导致 if 语句未执行,num 未被赋值,所以控制台输出 undefined。

2.变量重复声明的问题(待定)

我们知道使用 var 关键字声明的变量可以重复赋值,但在某些情况下会造成一些问题。例如下面的情景:

function Sum(arrList) {
  var sum = 0;
  for (var i = 0; i < arrList.length; i++) {
    var arr = arrList[i];
    for (var i = 0; i < arr.length; i++) {
      sum += arr[i];
    }
  }
  return sum;
}
var arr = [1, 2, 3, 4, 5];
document.write(Sum(arr));

 

如果在我们的环境中运行这段代码,环境会卡死。

这是因为在两层 for 循环中我们使用同一变量 i 进行赋值时,代码在执行过程中,第二层的 for 循环会覆盖外层变量 i 的值。

3.非块作用域的问题

使用 var 关键字定义的变量只有两种作用域,全局作用域和函数作用域,两者均不是块结构,会造成变量声明的提升。这可能出现下面这种问题:

function func() {
  for (var i = 0; i < 5; i++) {}
  document.write(i); // 5
}
func();

 

运行上述代码后,你会发现页面上会显示 5。我们虽然是在 for 循环中定义的 i 变量,但由于变量被提升到 for 语句之上,所以退出循环后,变量 i 并没有被销毁,我们能够在循环外获取它的值。

实验总结

本节实验为大家介绍了 let 和 const 关键字,同学们需要记住使用 const 关键字声明的是常量,必须赋初始值,并且不能在同一作用域内重新声明,也无法重新赋值。

我们来回顾一下 const、let、var 三者之间的区别:

  • var 语句的作用域是函数作用域或者全局作用域;它没有块作用域,故不存在暂时死区;它可分配,也可重复性声明。
  • let 语句属于块作用域,受到暂时死区的约束;它可分配,但不可重新声明。
  • const 语句也属于块作用域,同样受到暂时死区的约束;它既不可重新分配,也不可重新声明。

 最后

         感谢各位小伙伴的阅读,您的点赞与收藏,是我创作的动力与快乐!

         文中内容来自于蓝桥杯官网,由本人整理而来.

         欲知后事如何请听下回分解啦!

 

你可能感兴趣的:(web学习记录,es6,前端,javascript)