我是nodejs新手,我知道$在jQuery中使用,但是我正在学习的教程向我展示了下面的一段代码,这让我很困惑,它是'$',
var $ = cheerio.load(res.text);
$('#topic_list .topic_title').each(function (idx, element) {
var $element = $(element);
var href = url.resolve(cnodeUrl, $element.attr('href'));
topicUrls.push(href);
});
谁能解释一下这里的 5 $s 吗?预先感谢您。
最佳答案
就像可以有一个名为 a 的变量一样,您也可以有一个名为 $ 或 _ 的变量。在 javascript 中搜索 google 变量名称将提供更多信息,但就您的问题而言,请考虑以下内容:
var a = 1; //creates a variable named a, value is one
var $ = 1; //creates a variable named $, value is one
因为是javascript,变量也可以保存函数:
var a = function(){return 1;} // calling a() will return one
var $ = function(){return 1;} // $ is a var whose value is a function.
现在,当您有一个经常调用的函数时,例如 JQuery 库有一个名为 JQuery() 的函数,它包装元素并包含其他所有内容,那么为其提供一个快捷方式是有意义的:
function JQuery(){...} //everything that JQuery does
var $ = JQuery; //now $() is the shorthand for JQuery()
同样,因为它是 Javascript,函数可以返回一个值,或者另一个函数:
var cheerio = {
load: function(start){
return function(end){ return start + " " + end }
}
}
var $ = cheerio.load("hello");
$("world"); // will return "hello world"
$("my friend"); //will return "hello my friend"
在您的示例代码中,$已用作cheerio.load()函数的返回值的简写。因此, $('#topic_list .topic_title')
相当于
cheerio.load(res.text)('#topic_list .topic_title')
这意味着 cheerio.load(res.text)
预计会返回一个稍后可以调用的函数。因此,从示例代码的第二行开始, $ 只是该函数。如果您之前有 JQuery,您仍然可以使用 JQuery() 而不是 $()。
$element 只是一个变量名,一个视觉线索,表明它是 $(element) 的结果。你可以简单地说 var froggy=$(element)
但 $element 更具可读性。
关于javascript - $ 登录 javascript 试图杀死我,谁能帮我摆脱困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581380/