【发布时间】:2015-09-15 20:03:29
【问题描述】:
当我使用“use strict”时,我在函数中声明了两次变量。我知道这个函数具有全局作用域,它的变量也被视为具有窗口作用域的全局变量,即 window.car
但是它不应该用 let 数据类型在 if 语句中重新声明速度和容量变量。 (“let”声明一个块作用域的局部变量,可选择将其初始化为一个值。)
(function car() {
"use strict";
var speed = 100;
const capacity = '1000CC';
if(speed) {
let speed = 200;
let capacity = '5000CC';
console.log(speed,capacity);
}
console.log(speed,capacity);
})();
请让我知道我在这里缺少什么。
【问题讨论】:
-
那么问题是什么,我从日志中得到了
200 "5000CC",正如预期的那样? -
我认为应该有错误。 “你不能在 if 语句中重新声明速度和容量”,因为我使用的是“使用严格”
-
@JahanzaibAslam 不跨越不同的范围,因为
let和const都是块范围 -
您不是在重新声明变量,而是在 ìf` 语句的块范围内初始化一个新变量
speed和capacity。 -
否。请阅读:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。只有在同一块范围内重新声明同一变量会引发 TypeError。