相关疑难解决方法(0)

Chrome控制台清除分配和变量

我正在学习JavaScript并且已经在Chrome控制台中进行了大量测试.即使我清除控制台,或者使用我在其他线程中看到的任何命令(localStorage.clear()),我指定的任何变量仍会显示出来.

例如,如果我做了类似的事情 localStorage.clear()

在此输入图像描述

我清理并关闭控制台,重新打开它,然后寻找var name = "Bob";它的价值,它仍然存在name.

在此输入图像描述

清除这些的最佳方法是什么?

javascript google-chrome-devtools

42
推荐指数
4
解决办法
3万
查看次数

让let语句在全局对象上创建属性吗?

在JavaScript中,var声明在全局对象上创建属性:

var x = 15;
console.log(window.x); // logs 15 in browser
console.log(global.x); // logs 15 in Node.js
Run Code Online (Sandbox Code Playgroud)

ES6引入let了具有块范围的声明的词法作用域.

let x = 15;
{
   let x = 14;
}
console.log(x); // logs 15;
Run Code Online (Sandbox Code Playgroud)

但是,这些声明是否在全局对象上创建属性?

let x = 15;
// what is this supposed to log in the browser according to ES6?
console.log(window.x); // 15 in Firefox
console.log(global.x); // undefined in Node.js with flag
Run Code Online (Sandbox Code Playgroud)

javascript let ecmascript-6

41
推荐指数
3
解决办法
2863
查看次数

JavaScript let 双重声明

我知道 JS 中的 let 不能声明变量两次。但是当我在控制台中尝试以下代码时:

a = 1;
let a = 2;
let a = 3;
    .
    .
    .
let a = 100;
Run Code Online (Sandbox Code Playgroud)

注意:它们是逐行运行的(如下面的屏幕截图所示)。版本是谷歌浏览器91.0.4472.114

在此输入图像描述

它总是有效,没有错误。这真的让我很困惑,为什么它工作得很好?我知道控制台中发生的情况并不代表脚本中发生的情况。但我的问题是为什么它存在于控制台中?这有什么原因吗,或者可能是一个错误?

因为我假设let和const具有相同的声明行为,如果我使用const而不是let,这是毫无疑问的。

b = 1;
const b = 2;
const b = 3; //Uncaught SyntaxError: Identifier 'b' has already been declared
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript declaration let google-chrome-console

3
推荐指数
1
解决办法
1874
查看次数