左侧的无效分配,javascript

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6503409/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-23 22:04:50  来源:igfitidea点击:

Invalid assignment left-hand side, javascript

javascriptvariable-assignment

提问by Hrishikesh Choudhari

I am sure I am doing something silly here:

我确定我在这里做了一些愚蠢的事情:

var addhtml = '<div id="leftbio" class="left-float">'
+= '<div id="bioname">e["screen_name]</div>'
+= '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
+= '<div id="biodetails">e["description"]</div>'
+= '</div>';             // invalid assignment left-hand side
console.log(addhtml);

And Netbeans is telling me that invalid assignment left-hand sideerror.

Netbeans 告诉我那个invalid assignment left-hand side错误。

Whats wrong ?

怎么了 ?

回答by Nicola Peluchetti

You don't need +=to concatenate, you just need +

你不需要+=连接,你只需要+

This is ok

还行吧

var addhtml = '<div id="leftbio" class="left-float">'
+ '<div id="bioname">e["screen_name]</div>'
+ '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
+'<div id="biodetails">e["description"]</div>'
+ '</div>';         
console.log(addhtml);

回答by T.J. Crowder

+=means "take the thing on the left, add this to it, and store the result in the thing on the left". The left-hand side of your +=is a literal (the first one is '<div id="leftbio" class="left-float">). You can't assign to literals.

+=意思是“拿左边的东西,把它加进去,然后把结果存储在左边的东西里”。您的左侧+=是文字(第一个是'<div id="leftbio" class="left-float">)。您不能分配给文字。

Put it another way, a += bbasically means a = a + b. You can see how that doesn't work if ais a literal rather than a variable.

换句话说,a += b基本上是指a = a + b。如果a是文字而不是变量,您可以看到它是如何不起作用的。

You just want +there:

你只想+在那里:

var addhtml = '<div id="leftbio" class="left-float">'
+ '<div id="bioname">e["screen_name]</div>'
+ '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
+ '<div id="biodetails">e["description"]</div>'
+ '</div>';
console.log(addhtml);

To give you an idea of the difference between +and +=:

为了让你们之间的差异的想法++=

var a, b;
a = "foo";
b = a + "bar";  // Doesn't modify `a`
console.log(a); // "foo"
console.log(b); // "foobar"

vs.

对比

var a, b;
a = "foo";
b = a += "bar"; // Modifies `a` (assigning the result to `b` is unusual -- very -- but valid)
console.log(a); // "foobar" - note it's changed
console.log(b); // "foobar"


Off-topic:

题外话

I'd also recommend indenting the subsequent lines of the assignment statement, but that's just style:

我还建议缩进赋值语句的后续行,但这只是样式:

var addhtml = '<div id="leftbio" class="left-float">'
    + '<div id="bioname">e["screen_name]</div>'
    + '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
    + '<div id="biodetails">e["description"]</div>'
    + '</div>';
console.log(addhtml);

回答by KooiInc

The assignment (=) is not necessary, you can just use +. There are two other ways to construct multiline strings:

赋值 (=) 不是必需的,您可以使用 +。还有另外两种构造多行字符串的方法:

// method 1: use continuation \
 var addhtml = '\
        <div id="leftbio" class="left-float"> \
            <div id="bioname">e["screen_name]</div> \
            <div id="biophoto"><img src="e["profile_image_url"]"/></div> \
            <div id="biodetails">e["description"]</div> \
        </div>';

//method 2: use an array and join the elements
 var addhtml = [
       '<div id="leftbio" class="left-float">',
       ' <div id="bioname">e["screen_name]</div>',
       ' <div id="biophoto"><img src="e["profile_image_url"]"/></div>',
       ' <div id="biodetails">e["description"]</div>',
       '</div>'
     ].join('');

回答by paxdiablo

x += yis shorthand for x = x + ywhich is not what you want here.

x += y是简写,x = x + y这不是您在这里想要的。

Either use:

要么使用:

var addhtml = '<div id="leftbio" class="left-float">';
addhtml += '<div id="bioname">e["screen_name]</div>';
addhtml += '<div id="biophoto"><img src="e["profile_image_url"]"/></div>';
addhtml += '<div id="biodetails">e["description"]</div>';
addhtml += '</div>';

or:

或者:

var addhtml = '<div id="leftbio" class="left-float">'
    + '<div id="bioname">e["screen_name]</div>'
    + '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
    + '<div id="biodetails">e["description"]</div>'
    + '</div>';

回答by Muhammad Zeeshan

Don't need =

不需要=

var addhtml = '<div id="leftbio" class="left-float">'
    + '<div id="bioname">e["screen_name]</div>'
    + '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
    + '<div id="biodetails">e["description"]</div>'
    + '</div>';             // invalid assignment left-hand side
    console.log(addhtml);

回答by Giann

You cannot chain attribution operators like +=.

您不能像+=.

var addhtml = '<div id="leftbio" class="left-float">'
              + '<div id="bioname">e["screen_name]</div>'
              + '<div id="biophoto"><img src="e["profile_image_url"]"/></div>'
              + '<div id="biodetails">e["description"]</div>'
              + '</div>';             // invalid assignment left-hand side
console.log(addhtml);