有更多方法可以在JavaScript中定义变量。旧的方法是使用关键字 简短说明:在整个文本中,即使在我接近使用 ÅTaJe oppseg? 范围是可见一个声明值的环境。 JavaScript中有三个频段:全局,功能和块。 p>
在整个程序中都可以使用全球范围内声明的所有值。不管在声明此值时使用哪个密钥在整个程序中都可以看到。 p>
因此,代码中的任何地方都可以访问 一般来说,应该避免声明全局变量,因为这为出现各种重叠和 /或取消其他脚本和库的范围打开了空间。< / p>
在这种情况下,重要的是要强调,没有关键字的每个变量自动成为全局变量。 p>
VAR和飞行之间的差异是当它们不是全局变量时出现的。用 这是什么?当您调用koud7的函数时,它会看到一个可变的 与 这是什么?我有一个 变量不会驱逐错误。 p>
因此,var
。但是,ES6标准JavaScript带来了两个新的关键字来定义变量-let
和const
。在本文中,您将阅读这三种方法之间的最基本差异。 strong> p>
const
定义的值时,在susthini中,这意味着它在konstant悬架中定义了值。有关本文第四章中两者之间的区别的更多信息。 em> p>
本文中流动的所有力量是什么?
var
和let
之间的差异(范围)(范围)
name
变量6,因为它具有全局范围。 logName
和console.log
函数可以访问name
变量6。var
声明的变量具有声明其声明的函数的范围。 p>
ime
,因为ime
变量的范围是此函数。但是,当您尝试在console.log(ime)
中处理该变量时,您已经处于全局范围,并且没有访问(看不到)ime
变量,因此会遇到错误。let
声明的变量不同,代码代码 em>的范围。 JavaScript中的代码块简单地调解了Vitic Brackets {}
中的所有内容。这可以是if-else
语句,switch
语句,任何循环... p>
if
语句(块代码),其中ime
变量的声明。在同一代码代码14中,请参见此变量,因为该变量的范围是代码块。但是,您在全局范围中不在该块中,无法访问ime
变量。var
声明的ime
变量在这种情况下将具有全局范围,并且可以(可见)到另一个console.log(ime)
语句。
var
和let
之间的差异
var
和let
密钥之间的另一种差异是在所谓的提升(升降机)期间的行为。这是一种机制,在其中,函数和变量的声明似乎移至其范围的顶部(提升)。正是由于这种机制,您可以在声明之前访问变量或功能。 p>
logName
函数可以访问ime
变量,这就是为什么变量ime
看起来像的原因
这是var
和let
在此处执行的差异的地方。提升的原则只能与var
声明的变量合作。如果您尝试利用let
来声明变量,则会收到一个错误,因为用let
声明的变量不会提高。 p>
“看似”一词是有意标记的,因为这正是解释的到来。当代码执行时没有任何代码行不会均匀移动时,没有任何抬高。举起只是“显然”。 p>
阅读时,什么JavaScript引擎可以工作?
当某些引擎(负责执行JavaScript代码的组件)时,JavaScript代码由两个步骤执行:创建阶段(阶段)阶段(执行阶段)。 p>
-
在“引擎阶段”中,每个变量的声明,分配给她在内存中的空间和
undefined
的初始值。然后声明变量。这是声明 em>变量。 p> li>在执行阶段,将变量给出代码中分配给其的值。例如。当您编写
var ime = 'Slaven'
时,这是初始化变量。
提升机制只能提交变量声明,而不是初始化。这是由于此变量在var
中声明,当您尝试使用它们之前,它们在初始化它们之前尝试使用它们的值。 p> p>
用let
声明的变量类型,您在初始化之前无法访问(第二步),如果在初始化之前尝试使用它,您将找到错误代码45。在Susthin'Engine'告诉您,“我看到一个变量,已声明,但它不是初始化的,因此您无法访问它。 p>
注意:在这两个步骤中,用 另外一个差异是可以用相同名称重新指定的 如果使用 有必要有多么潜在的问题。不想发现自己在一段时间后尝试再次声明变量的情况,因为您可能已经忘记了自己已经有一个具有相同名称的变量。 此上下文中的变化来自 这将在涉及倾斜变量时同时驱逐 用 这不应与我在上一章中所说的那样混合在一起,即 mečiutijet,关键字 这是不允许的,您将同时遇到一个错误。由于不允许指定的罪分配为常数。 求助于 我们这里有一个 在JavaScript和 有一些方法可以冻结对象中的某些属性,但这是一个值得在单独文本中检查的话题。 p>
避免使用全局变量。这打开了太多空间,无法重叠来自不同脚本或库的名称变量。 通常,当我们拥有 如果您可以预期该变量不会接收其他值,请使用let
和const
声明了严格的说话变量,结束了所谓的“时间死区”(时间死区),解释这将需要更深入的创建和执行阶段(执行) ),我认为这应该是另一个文本的话题。 em> p>
重新支配的差异
var
声明的变量。 p>
var
,这是有效的JavaScript语法。第二个声明将取消第一个,因为ime
变量将带有“ John”的值。 p>
let
(以及const
)。用let
声明的变量无法重新宣布,您会收到一个错误。 p>
let
错误。 p>
let
和const
之间的差异
let
和const
声明的变量在我到目前为止与之交谈的所有情况(范围,举重,重新删除)。 p>
这两个关键之间的区别在于,用let
声明的变量可以在其他地方分配新值,直到用const
声明变量,这是他们介绍的目的。
let
变量无法重新宣布。 koud12变量不再被声明,而不是仅授予另一个值。 p>
const
不允许这样做。 p>
const
变量的牧场的一件事是,当他们携带参考数据类型的价值(例如对象或字符串)时,它们的行为方式。尽管不允许在此处重新分配值,但可以在该值中更改元素本身。korisnik
对象,该对象具有两个属性。之后,在该对象中更改了godine
属性。const
变量中允许使用此功能。这称为变量的突变。因此,允许它更改对象内的各个属性,但是不允许将值重新分配给整个变量。
ZakljuäAk
let
和kooude2时,通常应该避免现在声明变量的var
关键字。带有var
肮脏全局(窗口)设施的变量,这是必需的。 p> li>
const
来声明变量。如果您有理由认为它曾经使用此变量获取另一个值,则可以使用let
关键字。 p> li>