7

我总是在 javascript 中看到一种书写风格,但我不知道为什么这样的代码。例如,我有一个变量。

   var topic = "community";

当我学习 javascript 时,我看到有人用这样的 jQuery 编写代码,部分代码。

 :contains("' + topic + '")

但我认为它可以像这样编码。

  :contains(topic)

或:包含(“主题”)

以上三者有什么区别?

4

4 回答 4

6
:contains("topic")

此搜索包含“主题”字符串的元素

然而

 var topic = "community";
 :contains(topic)

这里的主题变成“社区”..所以它搜索包含“社区”的元素;

这很好

:contains("' + topic + '")

我猜代码不完整..

 $('div:contains("' + topic + '")')..; //div for example sake

这变成

 $('div:contains("community")')..; //<-- just to make sure the string is encoded with `""`
于 2013-07-12T06:53:59.653 回答
0

单引号与双引号通常与是否会发生字符串替换有关,但据我所知,在 JS 中这并不重要

3 之间的区别在于,第一个是可以发生字符串替换的变量赋值。第二个是传递一个字符串作为参数,第三个是传递变量或常量主题

var topicOne = "Community1";

function write(toOutput) {
    document.write(toOutput);
}

write(topicOne);
write("topicOne");
write('topicOne');

所以这是 3 将输出的内容:

Community1
topicOne
topicOne

然而,在 PHP 中,相同的代码会有不同的行为,因为双引号意味着字符串替换

<?php
$topicOne = "community1";
$topicTwo = "community2$topicOne";


function write($toOutput) {
     print $toOutput;
}
write($topicOne);
write("$topicOne");
write('$topicOne');
write($topicTwo);
write("$topicTwo");
write('$topicTwo');
?>

将产生不同的输出

community1
community1
$topicOne
community2community1
community2community1
$topicTwo

看看区别在哪里?

于 2013-07-12T07:09:34.370 回答
0

:contains("' + topic + '")将查找字符串“(主题值)”,包括单引号。

:contains(topic)

将查找主题的值,没有引号。

:contains("topic")

将寻找字面上的主题。

于 2013-07-12T06:56:34.903 回答
0

单引号和双引号没有区别,都用于将元素标记为字符串。

var s = "hello" 
var m = 'hello'
m === s // true

另一个示例是指转义字符串,在以下情况下:

contains("' + topic + '")

topic 实际上引用了一个变量而不是一个字符串,因此必须对引号进行转义,以便程序可以访问变量的值。否则它不会读取变量主题的值,而只是打印字符串“主题”。

于 2013-07-12T06:57:37.197 回答