admin管理员组文章数量:1130349
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 side error.
Whats wrong ?
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 side error.
Whats wrong ?
Share Improve this question asked Jun 28, 2011 at 8:04 Hrishikesh -Rishi- ChoudhariHrishikesh -Rishi- Choudhari 12.4k18 gold badges62 silver badges75 bronze badges 1- 4 what's += doing there? a + is what you want – Nylon Smile Commented Jun 28, 2011 at 8:06
6 Answers
Reset to default 13You 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);
+= 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.
Put it another way, a += b basically means a = a + b. You can see how that doesn't work if a is a literal rather than a variable.
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);
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('');
x += y is shorthand for x = x + y which is not what you want here.
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>';
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);
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);
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 side error.
Whats wrong ?
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 side error.
Whats wrong ?
Share Improve this question asked Jun 28, 2011 at 8:04 Hrishikesh -Rishi- ChoudhariHrishikesh -Rishi- Choudhari 12.4k18 gold badges62 silver badges75 bronze badges 1- 4 what's += doing there? a + is what you want – Nylon Smile Commented Jun 28, 2011 at 8:06
6 Answers
Reset to default 13You 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);
+= 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.
Put it another way, a += b basically means a = a + b. You can see how that doesn't work if a is a literal rather than a variable.
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);
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('');
x += y is shorthand for x = x + y which is not what you want here.
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>';
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);
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);
本文标签: Invalid assignment lefthand sideJavaScriptStack Overflow
版权声明:本文标题:Invalid assignment left-hand side, javascript - Stack Overflow 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/questions/1738369408a1568344.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论