为什么我可以多次声明一个 javascript 变量?
Why can I declare a javascript var multiple times?
为什么我可以多次声明一个变量?我预计会出现错误。
此代码引发错误:
let a = true;
let a = false;
未捕获的语法错误:标识符 'a' 已经声明
为什么这也不会引发错误?
var b = true;
var b = false;
预期:未捕获语法错误:标识符 'b' 已声明
var
被吊起;忽略重复的变量名。对于解释器,您的第二个代码段如下所示:
var b;
b = true;
b = false;
相比之下,let
未 提升,因此禁止重复声明。
这是因为 var
有变量提升,但 let
(或 const
没有)。
所以这意味着每次你使用 var
,它基本上会取消之前的操作,因为对于 JavaScript 解释器来说,你的第一个代码看起来像:
var b;
b = true;
b = false;
但这不适用于 let
或 const
,因为 let
和 const
是块作用域,而 var
是函数作用域。
为什么我可以多次声明一个变量?我预计会出现错误。
此代码引发错误:
let a = true;
let a = false;
未捕获的语法错误:标识符 'a' 已经声明
为什么这也不会引发错误?
var b = true;
var b = false;
预期:未捕获语法错误:标识符 'b' 已声明
var
被吊起;忽略重复的变量名。对于解释器,您的第二个代码段如下所示:
var b;
b = true;
b = false;
相比之下,let
未 提升,因此禁止重复声明。
这是因为 var
有变量提升,但 let
(或 const
没有)。
所以这意味着每次你使用 var
,它基本上会取消之前的操作,因为对于 JavaScript 解释器来说,你的第一个代码看起来像:
var b;
b = true;
b = false;
但这不适用于 let
或 const
,因为 let
和 const
是块作用域,而 var
是函数作用域。