Зачем вам нужен + между переменными в JavaScript? - PullRequest
3 голосов
/ 16 сентября 2010

Почему эта линия работает

$('#body-image').css("background-image", 'url('+ backgroundimage +')');

но не этот

$('#body-image').css("background-image", 'url('backgroundimage')');

или этот

$('#body-image').css("background-image", 'url(backgroundimage)');

Ответы [ 5 ]

7 голосов
/ 16 сентября 2010

backgroundimage - переменная JavaScript.Оператор конкатенации в JavaScript - это +, поэтому, чтобы поместить строку вместе с переменной, вы делаете 'some string ' + someVariable.Без + JavaScript не знал бы, что делать с вашей переменной (а в третьем примере даже не знал бы, что была переменной).

2 голосов
/ 16 сентября 2010

Вам необходимо объединить строку с переменной backgroundimage. Таким образом, вы используете «+» для этого.

Вот почему это не работает.

$('#body-image').css("background-image", 'url('backgroundimage')');

И секунда не работает, потому что нет изображения под названием 'backgroundimage'.

$('#body-image').css("background-image", 'url(backgroundimage)');
1 голос
/ 16 сентября 2010

Потому что вы строите строку.Вам не хватает строки, где backgroundimage получает значение:

 var backgroundimage = "someimage.gif";
 $('#body-image').css("background-image", 'url('+ backgroundimage +')');  

становится:

 $('#body-image').css("background-image", 'url(someimage.gif)');  
0 голосов
/ 16 сентября 2010

В JavaScript строковый литерал (т. Е. «Я строка») фактически обрабатывается как объект String (хотя, строго говоря, это не так - см. документацию MDC - но мыможет игнорировать разницу на этом уровне).Следующие две строки эквивалентны:

var letters = "ABC", numbers = "123";
var letters = new String("ABC"), numbers = new String("123");

Строки объединяются с использованием оператора + или метода String.concat, каждая из которых объединяет 2 или более строк в порядке слева направо и возвращаетрезультат.Таким образом, чтобы получить «ABC123», мы можем сделать любое из следующего:

"ABC" + "123"
"ABC" + numbers
letters + "123"
letters + numbers
"ABC".concat("123")
"ABC".concat(numbers)
letters.concat("123")
letters.concat(numbers)

, но не:

letters"123"
"ABC"numbers
lettersnumbers
"lettersnumbers"

, которые, по сути, являются тем же, чем выпытаюсь сделать в ваших примерах.

0 голосов
/ 16 сентября 2010

это конкатенация строки. скажем, backgroundimage 'foo.jpg, то

'url('+backgroundimage+')'  =  'url(foo.jpg)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...