Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中定义和声明变量之间有什么区别吗?_Javascript_Variables - Fatal编程技术网

在javascript中定义和声明变量之间有什么区别吗?

在javascript中定义和声明变量之间有什么区别吗?,javascript,variables,Javascript,Variables,这似乎是一个非常琐碎的问题,但对我来说却是一个非常混乱和反复出现的问题。在一些javascript手册或教程中,这些术语交替使用。 在另一些例子中,我发现了这样一种解释:当我们使用varconst创建变量时,我们声明变量,当我们向声明的变量附加一些值/对象时,我们定义变量,如下所示: var name; //declaring name = 'Adam' //defining var age = 'dead' //declaring + defining 使用这两个术语是否有任何经批准且正确的

这似乎是一个非常琐碎的问题,但对我来说却是一个非常混乱和反复出现的问题。在一些javascript手册或教程中,这些术语交替使用。 在另一些例子中,我发现了这样一种解释:当我们使用
var
const
创建变量时,我们声明变量,当我们向声明的变量附加一些值/对象时,我们定义变量,如下所示:

var name; //declaring
name = 'Adam' //defining
var age = 'dead' //declaring + defining

使用这两个术语是否有任何经批准且正确的规则?

var x
是一种声明,因为您没有定义它所持有的值,而是声明它的存在以及内存分配的需要

var x=1
既是声明又是定义,但在开头声明了
x
,而其定义位于指定行(变量赋值发生在内联)

我知道你已经理解了提升的概念,但是对于那些不理解的人来说,Javascript会把每个变量和函数声明都带到顶部(对应的范围),然后依次分配它们

不过,你似乎已经知道了其中的大部分。如果你想进行一些高级、深入的探索,这里有一个很好的资源。但我觉得你以前去过那里


var x
是一个声明,因为您没有定义它所持有的值,而是声明它的存在和内存分配的需要

var x=1
既是声明又是定义,但在开头声明了
x
,而其定义位于指定行(变量赋值发生在内联)

我知道你已经理解了提升的概念,但是对于那些不理解的人来说,Javascript会把每个变量和函数声明都带到顶部(对应的范围),然后依次分配它们

不过,你似乎已经知道了其中的大部分。如果你想进行一些高级、深入的探索,这里有一个很好的资源。但我觉得你以前去过那里

我认为“变量定义”不是一个标准的JavaScript术语

可以定义函数(各种类型)和对象属性,但始终声明变量。这个术语可能暗示了变量的声明性本质——声明总是适用于完整的当前范围,而不是执行某个操作并执行某个操作

var name
是一个声明
var age='dead'
是一个带有初始化器的声明
name='Adam'
只是一个赋值。我猜“定义”变量指的是它不再是
未定义的
,因此赋值语句或声明的初始化器都可以这样做。不过,我更愿意谈论变量的初始化。

我认为“变量定义”不是一个标准的JavaScript术语

可以定义函数(各种类型)和对象属性,但始终声明变量。这个术语可能暗示了变量的声明性本质——声明总是适用于完整的当前范围,而不是执行某个操作并执行某个操作


var name
是一个声明
var age='dead'
是一个带有初始化器的声明
name='Adam'
只是一个赋值。我猜“定义”变量指的是它不再是
未定义的
,因此赋值语句或声明的初始化器都可以这样做。不过,我更愿意谈论变量的初始化。

第一行技术上确实将变量定义为
undefined
,这是JS中有效的原始数据类型。第二行实际上将变量重新定义为字符串“Adam”。@skyline3000 right!请注意,
var
let
之间有一个重要的区别,您可能需要查找术语变量提升。撇开编程语言之间的技术细节不谈,我不认为任何程序员会被您使用的术语弄糊涂——这几乎是所有现代语言的标准。正如我在第一条评论中提到的,请注意JS中
undefined
的细微差别,因为并非所有语言都有这个概念。第一行技术上将变量定义为
undefined
,这是JS中有效的原始数据类型。第二行实际上将变量重新定义为字符串“Adam”。@skyline3000 right!请注意,
var
let
之间有一个重要的区别,您可能需要查找术语变量提升。撇开编程语言之间的技术细节不谈,我不认为任何程序员会被您使用的术语弄糊涂——这几乎是所有现代语言的标准。正如我在第一篇评论中提到的,请注意JS中未定义的
之间的细微差别,因为并非所有语言都有这个概念。