JavaScript 使用 let 的块作用域
JavaScript blockscope with let
我修改了下面给出的 MDN website 的原始脚本。
var 的类型是什么?是给变量赋值后才赋值的类型
是否var b = 1
覆盖了之前的语句var b = 10
?或者只是变量 b?
let 是一个非标准的语言特性吗?我读到 here ECMAScript 6 支持它。
var a = 5;
var b = 10;
if (a === 5) {
let a = 4; // The scope is inside the if-block
var b = 1; // The scope is inside the function
alert(a); // 4
alert(b); // 1
}
alert(a); // 5
alert(b); // 1
- 是的,
var x
没有类型。 var x = 1
的类型为 number
。
var b
不会覆盖其他语句,它只是为给定范围设置一个新变量。这意味着在该范围内,您将获得 b 的新分配值。
let
是 es6。所以是和否,取决于你的代码在哪里 运行.
What is the type of var?
var
没有类型。它是一个keyword用来声明变量。
Is the type assigned only after a value is assigned to a variable?
当你声明一个变量但不给它赋值时,它的值将是undefined, whose type is Undefined.
Does var b = 1 overwrite the previous statement var b = 10? Or just the variable b?
变量语句被提升到顶部。这意味着它们是等价的:
// ...
var b = 10;
if(cond) var b = 1;
var b;
// ...
b = 10;
if(cond) b = 1;
因此,由于 b
已经声明,var b = 1
将等同于 b = 1
。
Is let a non-standard language feature? I read here that it is supported in ECMAScript 6.
let
是在 JavaScript 1.7 中引入的,当时还不是任何 ECMA-262 标准的一部分。
现在 ECMAScript 6 已经对其进行了标准化(与 JS 1.7 有点不同)。但是,请注意 ECMAScript 6 仍是草案。
我修改了下面给出的 MDN website 的原始脚本。
var 的类型是什么?是给变量赋值后才赋值的类型
是否
var b = 1
覆盖了之前的语句var b = 10
?或者只是变量 b?let 是一个非标准的语言特性吗?我读到 here ECMAScript 6 支持它。
var a = 5;
var b = 10;
if (a === 5) {
let a = 4; // The scope is inside the if-block
var b = 1; // The scope is inside the function
alert(a); // 4
alert(b); // 1
}
alert(a); // 5
alert(b); // 1
- 是的,
var x
没有类型。var x = 1
的类型为number
。 var b
不会覆盖其他语句,它只是为给定范围设置一个新变量。这意味着在该范围内,您将获得 b 的新分配值。let
是 es6。所以是和否,取决于你的代码在哪里 运行.
What is the type of var?
var
没有类型。它是一个keyword用来声明变量。
Is the type assigned only after a value is assigned to a variable?
当你声明一个变量但不给它赋值时,它的值将是undefined, whose type is Undefined.
Does var b = 1 overwrite the previous statement var b = 10? Or just the variable b?
变量语句被提升到顶部。这意味着它们是等价的:
// ...
var b = 10;
if(cond) var b = 1;
var b;
// ...
b = 10;
if(cond) b = 1;
因此,由于 b
已经声明,var b = 1
将等同于 b = 1
。
Is let a non-standard language feature? I read here that it is supported in ECMAScript 6.
let
是在 JavaScript 1.7 中引入的,当时还不是任何 ECMA-262 标准的一部分。
现在 ECMAScript 6 已经对其进行了标准化(与 JS 1.7 有点不同)。但是,请注意 ECMAScript 6 仍是草案。