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

时间:2017-08-31 03:16:11

标签: javascript variables

这似乎是非常微不足道的问题,但对我来说非常混乱和反复出现。在一些javascript或教程手册中,这些术语是交替使用的。 在其他人中,当我们使用var const let创建变量并且我们定义变量时,我发现了声明变量的解释我们将一些值/对象附加到声明的变量,如下所示:

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

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

2 个答案:

答案 0 :(得分:3)

我会说“变量定义”不是标准的JavaScript术语。

所有类型的函数和对象属性都可以定义,但变量总是声明。这个术语可能暗示变量的声明性 - 声明总是适用于完整的当前作用域,它不是一个被执行并执行某些操作的动作。

<%@ page import="java.util.*" %> <%@ page import="org.json.*" %> <%@ page import="java.io.*" %> <%@ page import="java.net.*" %> <%@ page import="java.rmi.*" %> <%@ page import="java.text.*"%> 是一个声明。 Math = createObject("java","java.lang.Math");是带有初始化的声明。 var name只是一项任务。我猜“定义”变量是指它不再是var age = 'dead',因此赋值语句或声明的初始化者都可以这样做。不过,我宁愿谈论变量的初始化

答案 1 :(得分:0)

var x是一个声明,因为你没有定义它所拥有的值,但你声明它的存在和内存分配的需要。

var x = 1既是声明又是定义,但是在开头声明的x分开,而其定义来自指定的行(变量赋值发生在内联中)。

我看到你已经理解了hoisting的概念,但对于那些不熟悉的人来说,Javascript接受每个变量和函数声明并将其带到顶部(相应范围),然后逐步分配他们按顺序。

你似乎已经知道了大部分内容。如果您想进行一些深入,深入的探索,这里是一个很好的资源。然而,我感觉你曾经去过那里。

Javascript Garden