javascript - JavaScript 中的变量定义和声明有什么区别?

标签 javascript

这是变量定义还是声明?为什么?

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 有两个非值:nullundefined。所以 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/

相关文章:

javascript - WebGL 2.0 错误 : glDrawArrays: attempt to access out of range vertices in attribute 0

javascript - 不明白 JavaScript 如何与运算符一起使用

javascript - JS中的字符串到对象

javascript - 在 html 页面中生成实时表的最佳方法是什么?

javascript - 创建更紧凑的脚本

javascript - 在 Active Admin 上的依赖选择下拉列表中找不到错误(Rails 3.2、Active Admin 1.0)

javascript - 特定类型的数组,以及可能的好处和浏览器支持

javascript - 对象在 Edge 和 IE10 上不支持属性或方法 'propAttr'

javascript - 创建单例 ES6 的正确方法

javascript - 使用创建按钮重定向到另一个页面