javascript - $ 登录 javascript 试图杀死我,谁能帮我摆脱困境

标签 javascript node.js

我是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/

相关文章:

javascript - Backbone.js - 如何将非状态 "event"从一个 View 发送到另一个 View ?

node.js - NestJS 相当于express res.locals

javascript - 我怎样才能停止发送 promise ,直到 for-each 循环生成一个将作为 promise 发送的数组

node.js - 解析托管静态文件 URL 别名

javascript - 在azure上部署node.js + socket.io后端/服务器

javascript - 检查某些Web资源是否存在于服务器端或客户端更好?

javascript - jQuery Datepicker 在使用不同的日期格式时重置日期

javascript - pg-promise 错误地将多边形插入到 postgis 数据库中

IOS 2 上的 Javascript window.open 窗口错误

node.js - 如何在端口 80 上部署第二台服务器(听 EADDRINUSE:::80)