Javascript JS中的赋值

Javascript JS中的赋值,javascript,variable-assignment,Javascript,Variable Assignment,这是一个非常基本的JS问题,但这个“问题”让我发疯 从简单代数中,我希望第一个和第二个语句都是有效的。但是第二个总是抛出“无效赋值”错误 有人对此有很好的解释吗 fieldname1 = document.getElementById("emailID1"); document.getElementById("emailID2") = fieldname2; 非常感谢,大多数常见编程语言,包括JavaScript,都要求赋值的左侧(“目标”)是一个称为l值的东西。这意味着它是一个表示放置值的位

这是一个非常基本的JS问题,但这个“问题”让我发疯

从简单代数中,我希望第一个和第二个语句都是有效的。但是第二个总是抛出“无效赋值”错误

有人对此有很好的解释吗

fieldname1 = document.getElementById("emailID1");
document.getElementById("emailID2") = fieldname2;

非常感谢,

大多数常见编程语言,包括JavaScript,都要求赋值的左侧(“目标”)是一个称为l值的东西。这意味着它是一个表示放置值的位置的表达式。简单变量名或对对象的引用后跟
.propertyName
后缀,用作l值

在您的例子中,函数调用返回值不是l值,因为JavaScript不能实现这一点(有些语言可以)。函数调用始终是一个r值,表示出现在赋值右侧的内容

现在,在您的特定情况下,由于
getElementById()
返回对DOM元素的引用,因此可以执行以下操作:

document.getElementById("something").name = "frederick";
document.getElementById("emailID2").name = fieldname2;

函数仍然返回r值,但
.name
用作属性引用,因此作为l值。

大多数常见编程语言,包括JavaScript,都要求赋值的左侧(“目标”)是称为l值的东西。这意味着它是一个表示放置值的位置的表达式。简单变量名或对对象的引用后跟
.propertyName
后缀,用作l值

在您的例子中,函数调用返回值不是l值,因为JavaScript不能实现这一点(有些语言可以)。函数调用始终是一个r值,表示出现在赋值右侧的内容

现在,在您的特定情况下,由于
getElementById()
返回对DOM元素的引用,因此可以执行以下操作:

document.getElementById("something").name = "frederick";
document.getElementById("emailID2").name = fieldname2;

该函数仍然返回一个r值,但
.name
用作属性引用,因此用作l值。

在这种情况下,不能将值分配给对象本身

document.getElementById("emailID2") = fieldname2;
我猜你想做这样的事情:

document.getElementById("something").name = "frederick";
document.getElementById("emailID2").name = fieldname2;

在这种情况下,不能将值指定给对象本身

document.getElementById("emailID2") = fieldname2;
我猜你想做这样的事情:

document.getElementById("something").name = "frederick";
document.getElementById("emailID2").name = fieldname2;

赋值运算符解析等号的右侧,并将其存储在左侧的变量中,这就是第一行中发生的情况

第二行基本上是尝试获取变量
fieldname2
的值,并将其存储在函数调用
document.getElementById(“emailID2”)

JavaScript不知道如何在运行时解决这个问题,所以它抛出了一个无效的赋值操作

这里有更多关于MDN分配的信息:


赋值运算符解析等号的右侧,并将其存储在左侧的变量中,这就是第一行中发生的情况

第二行基本上是尝试获取变量
fieldname2
的值,并将其存储在函数调用
document.getElementById(“emailID2”)

JavaScript不知道如何在运行时解决这个问题,所以它抛出了一个无效的赋值操作

这里有更多关于MDN分配的信息:


你好,莉迪亚,你想实现什么?你不能给函数赋值。
document.getElementById(…)
返回一个元素,它是一个包含许多字段和数据成员(以及一组函数)的对象。分配给元素的目的是什么?您分配字段名2的方式不对。在编程语言中,
=
经常被用作赋值运算符,这是一段不幸的历史。如果将
=
仅用于比较的话,它可能会在很多很多很多年里避免很多混乱。有些语言(如Pascal)使用
:=
。我想我更喜欢
是一个基本的ASCII字符,并成为公认的赋值运算符。你好,Lídia,你想实现什么?你不能给函数赋值。
document.getElementById(…)
返回一个元素,它是一个包含许多字段和数据成员(以及一组函数)的对象。分配给元素的目的是什么?您分配字段名2的方式不对。在编程语言中,
=
经常被用作赋值运算符,这是一段不幸的历史。如果将
=
仅用于比较的话,它可能会在很多很多很多年里避免很多混乱。有些语言(如Pascal)使用
:=
。我想我更喜欢
是一个基本的ASCII字符,并成为公认的赋值运算符。我意识到这简化了赋值表达式的细微差别。嗨!非常感谢你!这就是我一直在寻找的答案!:我意识到这简化了赋值表达式的细微差别。嗨!非常感谢你!这就是我一直在寻找的答案!:D