我总是在 javascript 中看到一种书写风格,但我不知道为什么这样的代码。例如,我有一个变量。
var topic = "community";
当我学习 javascript 时,我看到有人用这样的 jQuery 编写代码,部分代码。
:contains("' + topic + '")
但我认为它可以像这样编码。
:contains(topic)
或:包含(“主题”)
以上三者有什么区别?
我总是在 javascript 中看到一种书写风格,但我不知道为什么这样的代码。例如,我有一个变量。
var topic = "community";
当我学习 javascript 时,我看到有人用这样的 jQuery 编写代码,部分代码。
:contains("' + topic + '")
但我认为它可以像这样编码。
:contains(topic)
或:包含(“主题”)
以上三者有什么区别?
: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 `""`
单引号与双引号通常与是否会发生字符串替换有关,但据我所知,在 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
看看区别在哪里?
:contains("' + topic + '")
将查找字符串“(主题值)”,包括单引号。
:contains(topic)
将查找主题的值,没有引号。
:contains("topic")
将寻找字面上的主题。
单引号和双引号没有区别,都用于将元素标记为字符串。
var s = "hello"
var m = 'hello'
m === s // true
另一个示例是指转义字符串,在以下情况下:
contains("' + topic + '")
topic 实际上引用了一个变量而不是一个字符串,因此必须对引号进行转义,以便程序可以访问变量的值。否则它不会读取变量主题的值,而只是打印字符串“主题”。