标识符和变量之间的区别(在JavaScript中)

ove*_*nge 2 javascript variables identifier

我一直在查看这个查询的答案.

使用以下javascript语法:

var var1 = 1;
var var2 = function(a, b){
         return a + b;
      };
var var3 = var2(3, 5);
Run Code Online (Sandbox Code Playgroud)

我想知道,是否var1/ var2/ var3是变量或标识符.在javascript中
var关键字有点混淆.

Ama*_*dan 8

标识符和变量之间的区别与名称和人员之间的区别相同.

姓名识别人.例如,他们也可以识别狗.名字不是人,也不是人名.但是你可以说我是Amadan(因为我说Amadan这个名字听起来很笨拙).

以同样的方式:

标识符标识变量.例如,他们还可以识别标签.标识符不是变量,也不是变量标识符.但你可以说那个变量是var2(因为说这是由标识符识别的变量var2听起来很笨拙).

我想知道,是否var1/ var2/ var3是变量或标识符.

Amadan是个人还是名字?我想,两者都取决于你对它的看法.对于变量和标识符,答案再次完全平行.

编辑:

我能说,Name而且Value,一般情况下?

确切地说,"价值"是第三个概念,变量的"内容"是相关的第四个概念.

对变量来说,更好的类比可能是更衣箱:它们有标识符(写在盒子上的数字)和内容(无论你放在哪里).变量不一定是值的内存位置,因为变量可以包含引用,而不是对象本身(有点像将一块不动产的地址放入一个锁定器,而不是试图填充一个整个房子进入盒子).所以,在这个拉伸的例子中,房子是价值; 储物柜是变量; 在#284写在更衣室是标识符; 并且带有"102 Nowhere Lane,Nowhereville"的纸张是对值的引用,也是变量的内容.如果值很小且足够简单(在编程术语中,"原始"),您可以将值本身填充到变量中,

例如:

var a = 1;         // assign a value
var b = [2, 3, 4]; // assign a reference
var aa = a;        // copy the contents
var bb = b;        // copy the contents
Run Code Online (Sandbox Code Playgroud)

声明四个变量(a,b,aa,bb),以及四个标识符他们的名字(也a,b,aabb); 它也提到许多值(1,2,3,4,阵列[2, 3, 4]).a并且aa每个包含原始值的不同副本1.b包含对值的引用[2, 3, 4](不是值[2, 3, 4]本身!),它反过来包含值2,34.bb包含...参考的另一个副本!因此,如果更改其中包含b的值,则bb自动更改的值也会更改:

b.push(5);
console.log(b);
// => [2, 3, 4, 5]
console.log(bb);
// => [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

功能也是价值.

function hello(name) {
  console.log("Hello, " + name);
}
Run Code Online (Sandbox Code Playgroud)

是(几乎但不是100%)完全相同

var hello = function(name) {
  console.log("Hello, " + name);
}
Run Code Online (Sandbox Code Playgroud)

它定义了一个标识符为的变量hello,其内容是对函数的引用.函数本身就是一个值.

  • @FilippW。变量是由标识符标识的内存空间,可以包含一个值(无论是原始值还是引用值)作为其内容。“a”既是一个标识符,又是由该标识符标识并包含原始值“1”的变量,如答案文本中所述(就像 Amadan 既是一个名字,又是一个带有该名字的人)。“b”既是一个标识符,又是由该标识符标识的变量,其中包含对值“[1, 2, 3]”的引用。标识符不能包含值,因此句子“`b`是一个*标识符*,其*内容*是...”是不正确的。 (2认同)