这是变量定义还是声明?为什么?
var x;
..这条语句后是否为x保留了内存?
编辑:
在 C 中,extern int x;
是一个声明,int x = 5;
是一个定义。 JS中的模拟是什么?维基百科说声明分配内存,定义为分配的内存分配一个值。
第二次编辑: 我认为@Deryck 的解释听起来不错,但有些输出与他的解释不一致:
> var x;
undefined
> x
undefined // now it looks like x is defined to the value undefined
> y
ReferenceError: y is not defined
如果 ReferenceError
输出会说 y is not declared
它是有意义的。但我经常读到 JS 有两个非值:null
和 undefined
。所以 var x
将是一个值为 undefined
的定义。
最佳答案
var x
是一个声明,因为您没有定义它拥有什么值(value),而是声明它内存分配的存在和需要。
var x = 1
既是声明又是定义,只是用 x
分开,在开头是声明,而它的定义 出现在指定的行(变量赋值发生在行内)。
我看到您已经理解了提升
的概念,但是对于那些不理解的人,Javascript 获取每个变量和函数声明并将其带到顶部(其相应范围),然后逐渐下降按顺序分配它们。
不过,您似乎已经了解其中的大部分内容。如果您想要进行一些高级、深入 探索,这是一个很好的资源。但我有一种感觉,你以前去过那里。
Javascript Garden
附言 - 您在 C 变量 dec/def 和 JS 之间的类比是正确的。您在维基百科上阅读的内容是正确的。
关于javascript - JavaScript 中的变量定义和声明有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20822022/