为什么在javascript中需要变量之间的+?

时间:2010-09-15 20:04:22

标签: javascript syntax

为什么这条线工作

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

但不是这个

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

或者这个

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

5 个答案:

答案 0 :(得分:7)

backgroundimage是一个JavaScript变量。 JavaScript中的连接运算符是+,因此要将字符串与变量放在一起,您需要'some string ' + someVariable。没有+,JavaScript就不知道如何处理你的变量(在你的第三个例子中,甚至不知道 是一个变量)。

答案 1 :(得分:2)

您需要使用变量backgroundimage连接字符串。所以你用“+”就可以了。

这就是为什么这不起作用。

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

secont不起作用,因为没有名为'backgroundimage'的图像。

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

答案 2 :(得分:1)

因为你正在构建一个字符串。您错过了backgroundimage获取值的行:

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

变为:

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

答案 3 :(得分:0)

它连接字符串。 让我们说backgroundimage是'foo.jpg,然后是

'url('+backgroundimage+')'  =  'url(foo.jpg)'

答案 4 :(得分:0)

在JavaScript中,字符串文字(即“我是一个字符串”)实际上被视为一个String对象(严格来说,它不是 - 请参阅MDC documentation - 但我们可以忽略它这个级别的差异)。以下两行是等效的:

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"

这些都与您在示例中尝试的内容完全相同。