最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Redeclaring a variable using `let` results in “Uncaught SyntaxError: redeclaration of let …” - Stack Overflow

programmeradmin2浏览0评论

I have code like this:

let accessAllowed;

accessAllowed = (2>18) ? true : false;
alert(accessAllowed);

However when I use this:

let accessAllowed;
let accessAllowed = (2>18) ? true : false;

alert(accessAllowed);

It results is an error and none of the JavaScript works.

Being a newbie to JS, I’m unsure if this is a feature of let. I couldn’t find anything about this elsewhere.

I have code like this:

let accessAllowed;

accessAllowed = (2>18) ? true : false;
alert(accessAllowed);

However when I use this:

let accessAllowed;
let accessAllowed = (2>18) ? true : false;

alert(accessAllowed);

It results is an error and none of the JavaScript works.

Being a newbie to JS, I’m unsure if this is a feature of let. I couldn’t find anything about this elsewhere.

Share Improve this question edited May 10, 2021 at 12:31 Sebastian Simon 19.5k8 gold badges60 silver badges84 bronze badges asked Dec 14, 2017 at 6:33 LethalLethal 711 gold badge1 silver badge5 bronze badges 2
  • you're redeclaring by using let the second time – sudo Commented Dec 14, 2017 at 6:37
  • 3 You know that (2>18) ? true : false; is the same as (2>18) ? – Jonas Wilms Commented Dec 14, 2017 at 6:41
Add a ment  | 

2 Answers 2

Reset to default 11

You cannot use let to redeclare a variable, whereas you can with var:

https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Statements/let

Redeclaring the same variable within the same function or block scope raises a SyntaxError.

let has different (arguably more useful) scoping rules than var to help prevent many types of bugs caused by var's quirks which don't exist in other languages but which must be retained in JavaScript for backwards patibility with scripts written decades ago.

Sidenote on let:

Note that many programming languages have the let keyword and often use it for declaring variables and constants - however note that each language's use of let has very different behavior, so do not expect let in JavaScript to behave like let in Swift, for example.

  • JavaScript: let - declares a variable whose scope is limited to the enclosing block, as opposed to var which uses either the global scope or the function scope (and understanding how var chooses between the two is not easy for beginners to understand). Because redeclaring a variable in the same scope is a meaningless operation that is probably done in-error it will give you a piler error, whereas redeclaring with var is valid inside a closure.
  • Swift: let - declares a constant. Note that a "constant" is not just a literal value, but also includes plex objects that are immutable.
  • Rust: let - Introduces a variable binding. Essentially the same thing as let in JavaScript except by default values are immutable (like in Swift). Use let mut to declare a mutable variable.
  • C#: let is a Linq keyword shorthand for Select and SelectMany.
  • VBScript, VBA and VB6: Let is a keyword that declares a class property setter for a value-type (i.e. not object-types).

Let cannot be re-declared in the same scope ( What you are doing is re-declaring, Rather you should not use the 'let' keyword in the 2nd line and would just reassign ).

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论