下一个问题:什么时候在 ECMA Script 6 中使用 var、let 和 const 合适?它部分回答了我的问题,但不完全回答。
阅读接受的答案,我了解到:
let
声明一个局部范围变量const
在块内声明一个常量(在函数内?)var
我不明白它是本地的还是全球的如果没有设置
nada
,范围是多少?在另一个相关问题中,我读到当什么都没有放置时,正在声明一个全局变量。
我有点困惑,想了解每种形式的变量声明的确切范围,如果可能的话,用一个简单的答案。
另一方面,我不知道这是否会成为另一个问题的主题,但我不太明白Javascript中global的概念是什么。当前 DOM 标签?所有打开的标签?所有打开的浏览器和标签?
对于那些不想阅读整个解释的人的总结:
const
定义了常量,但如果我们不小心,它们可以被修改。它具有块作用域,例如let
.var
定义具有函数范围(当前上下文)的变量。let
定义具有块作用域的变量,并从声明它们的行开始。const identificador = ...
创建一个常量。和Java、C#等其他语言一样,如果常量是一个对象,它的属性是可以修改的,所以我们做事一定要小心:
var identificador ...
Javascript 在某些事情上有点特殊,这是一个很好的例子来说明它的奇怪之处:变量可以在使用它时声明,在我们代码的开头或结尾;这并不重要,因为解释器会将声明“提升”到当前范围/上下文的开头(这称为提升,它也会影响函数声明)。范围始终是函数,而不是块:
此外,如果我们多次声明它也没关系,额外的声明将被忽略:
与闭包和异步回调一起使用的变量的值的行为常常使没有经验的程序员感到困惑,我举一个例子以及如何解决它:
let identificador = ...
我们来到了最新的 Javascript 新奇事物,它的行为方式与其他语言(如 Java 或 C)中的变量声明类似:变量只能从其声明中使用,并且它的作用域是块本地的,不是功能:
与 不同
var
,不允许重复:如果我们使用标识符而不声明它会发生什么?好吧,我们有两种情况:Javascript“正常”和Javascript“严格”
这个例子演示了这两种情况,也有助于回答“什么是Javascript中的全局?”这个问题。如果我们在浏览器中运行,全局对象总是
window
. 如果我们在 NodeJS 中运行代码,全局对象是global
.但请注意,
window
它不是整个浏览器窗口,而是当前选项卡。这是因为在 Firefox 出现之前没有标签,我们在浏览器中打开的每个页面都迫使我们打开一个新窗口。为了安全起见,我们不能在不同的选项卡之间共享变量。var 将声明一个局部变量,即如果你声明
x 将仅在 myVar 函数内部具有作用域,如果您在任何函数之外的所有 js 的开头声明
var x = 0;
它将在所有 js 中具有作用域。如果你不放 var 你声明一个全局变量,那么现在声明一个全局变量和一个局部变量有什么区别但是在所有的 js 中?如果你把它
var x = 0;
放在 js 的开头,它只会在当前 js 中具有作用域,如果你将它声明为 global,它将在 html 中声明的所有 js 中具有作用域。也就是说,如果我在一个 js 中声明,我x = 0;
可以在另一个 js 中使用该变量x
,它的值为 0const 可以像 一样作为全局变量
x = 0
,但最大的区别在于,因为它是一个常量,所以不能重新声明,也就是说,如果你放const x = 0;
了它,你以后不能把 x = 2 放在一个函数中。正如本页在 const 中解释的那样,它可以在数组的情况下进行更改,即填充或删除元素 https://mathiasbynens.be/notes/es6-const
Let 用于声明更多的局部变量,因为这个答案解释了 https://stackoverflow.com/questions/762011/whats-the-difference-between-using-let-and-var-to-declare-a-variable
实际上 var 可以说是父块,如果你在函数内部使用 let in a for
let 只能在 for 中使用,如果你使用 var,它将在整个函数中
在 JavaScript 的早期,var是创建变量的唯一方法。很久以后let和const诞生于 EcmaScript 6 标准。
var 特性
它可以被重置。
它可以重新分配。
它的影响力是全球性的。
这也将允许我们在多个if或其他嵌套结构中创建具有相同名称的var变量。即使按照它的范围,如果我们执行下面的代码,我们也不会得到任何错误。
这一点都不直观,这可能会给我们在编程时带来问题。所以建议不要使用 var。
让的特点
无法重置。
它可以重新分配。
它的范围是块。
施工特点
无法重置。
它不能被重新分配。作为一个常数,这是它的主要特征。我们不能改变常量的整个元素。
它不是一成不变的。我们可以改变常量元素的属性,但不能改变整个元素。我们将通过一个对象来解释这一点。
用于对函数的操作。
如果它们是仅用作参考的值,则应在函数内部使用const,如果此值不会在函数中更改,并且让您在需要更改值时使用它们。const和let都广泛用于函数中,无论是为了代码可读性还是使用计数器或累加器变量。
用于出口
通常在导入命名空间(文件、库等)时,需要公开某些函数、变量或常量,这些在应用程序中不会更改,因此它们将是const。
注意:不要忘记将大写字母用于const引用,因为它们是用于任何应用程序的值。
要记住的事情
这个答案是在 javascript 中使用 let 和 const 的一个更实际的例子。
对于那些不想阅读整个解释的人的总结:
const定义了常量,但如果我们不小心,它们可以被修改。它有块作用域,比如 let。
var定义具有函数范围(当前上下文)的变量。
let定义具有块作用域的变量,并从声明它们的行开始。
如果我们不声明标识符,它将被创建为全局变量,除非我们的代码声明为“严格”。