Неверное назначение левой стороны, JavaScript - PullRequest
2 голосов
/ 28 июня 2011

Я уверен, что я делаю что-то глупое:

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);

И Netbeans говорит мне, что invalid assignment left-hand side ошибка.

Что не так?

Ответы [ 6 ]

13 голосов
/ 28 июня 2011

Вам не нужно += для объединения, вам просто нужно +

Это нормально

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);
9 голосов
/ 28 июня 2011

+= означает «возьмите предмет слева, добавьте его к нему и сохраните результат в предмете слева».Левая часть вашего += является литералом (первая - '<div id="leftbio" class="left-float">).Вы не можете присваивать литералам.

Другими словами, a += b в основном означает a = a + b.Вы можете увидеть, как это не работает, если a является литералом, а не переменной.

Вы просто хотите + там:

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);

Чтобы дать вам представление оразница между + и +=:

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

и

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"

Не по теме :

Я также рекомендовал бы сделать отступ для последующих строк оператора присваивания, но это просто стиль:

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);
2 голосов
/ 28 июня 2011

Назначение (=) не обязательно, вы можете просто использовать +. Есть два других способа построения многострочных строк:

// 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('');
1 голос
/ 28 июня 2011

x += y является сокращением для x = x + y, что здесь не то, что вам нужно.

Либо используйте:

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>';

или:

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>';
0 голосов
/ 28 июня 2011

Вы не можете связать операторы атрибуции, такие как +=.

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);
0 голосов
/ 28 июня 2011

Не нужно =

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);
...