1.let 声明的变量,只在它所声明的代码块内有效
let x = 1;
{
let x = 2;
console.log(x);
}
console.log(x);
var y = 1;
{
var y = 2;
console.log(y);
}
console.log(y);
PS E:\nodejs\nodetest> node .\promise.js
2
1
2
2
let x = 2; 声明的变量x,不会受外层代码块的影响;而外层声明的变量x也不会受内层声明变量x的影响。
var 声明的变量,全局作用域,内层声明的变量会影响外层声明的变量的值。
{
var y = 2;
console.log(y);
}
console.log(y);
node .\promise.js
2
2
var 内层声明的变量,外层可使用。
{
let x = 1;
console.log(x);
}
console.log(x);
E:\nodejs\nodetest\promise.js:36
console.log(x);
^
ReferenceError: x is not defined
at Object.<anonymous> (E:\nodejs\nodetest\promise.js:36:13)
at Module._compile (node:internal/modules/cjs/loader:1256:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
at Module.load (node:internal/modules/cjs/loader:1119:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
let 内层声明变量,外层使用会报错