$ 与 $$(*) 是什么?

前言

今天在阅读一篇文章:小伙伴遇到这个问题说不想干前端了——一次Chrome翻译造成的玄学bug。主要内容是说翻译插件引发页面的react报错。

文章中用$$('*') 去获取报错页面所有的dom标签和正常无报错页面的dom标签,再进行对比来定位问题。
具体代码如下:

$$('*').reduce((acc, { tagName }) => `${acc}${tagName},`, '')

这篇文章看到了一个$$('*')的写法。我感到好奇,这个到底是什么?

可能性 1

通常来说这个$符号是jQuery 的别名写法。$$('*')难道是符号是jQuery某种高级写法吗?或者是设定了jQuery的使用是 $$

很多javascript库使用$作为一个函数或者变量名.如果你要使用这些javascript库又要使用jQuery 那么可以使用jQuerynoConflict()来来修改jQuery的别名。

noConflict() 方法让渡变量 $ 的 jQuery 控制权。
该方法释放 jQuery 对 $ 变量的控制。
该方法也可用于为 jQuery 变量规定新的自定义名称。

比如:


var $$ =$.noConflict();

在控制台试试$$('*')
在这里插入图片描述
但是它返回的是jQuery object. 并不是数组。执行这条语句是会报错的

var $$ =$.noConflict();
$$('*').reduce((acc, { tagName }) => `${acc}${tagName},`, '')

在这里插入图片描述

正解

在网上看到一篇问答:[What is the difference between $ and KaTeX parse error: Can't use function '$' in math mode at position 114: …入`jQuery`的情况下,`$̲` 和 `可以在Google Chrome,FirefoxSafari`浏览器中使用。

  1. $document.queryselect 的简写。返回传入选择的第一个元素
    在这里插入图片描述

  2. $$document.queryselectAll 的简写。返回传入选择所有元素
    在这里插入图片描述

我们再来执行一下这条代码:

$$('*').reduce((acc, { tagName }) => `${acc}${tagName},`, '')

在这里插入图片描述
正确地获取了页面所有元素的标签名

参考

What is the difference between $ and $$?
小伙伴遇到这个问题说不想干前端了——一次Chrome翻译造成的玄学bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值