请问zepto这句话怎么解读?

发布于 2022-09-01 16:10:21 字数 87 浏览 32 评论 0

window.Zepto = Zepto;
'$' in window || (window.$ = Zepto);
|| 这个是什么意思?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

記柔刀 2022-09-08 16:10:21

如果在一个逻辑表达式中遇到一个非布尔类型的操作数,那么该操作数的值就会成为该表达式所返回的结果

在题主例子中,可以如下分析:

  1. '$' in window 是判断 window 是否有 $属性,in返回 turefalse
  2. 如果返回true||操作符会偷懒,不会计算后面的 window.$ = Zepto
  3. 这时候整个表达式返回结果也是 true
  4. 如果返回false,会继续进行计算,这时候就会给 window 创建一个 $属性,并且引用 Zepto
  5. 这时候整个表达式返回的结果就是对Zepto的引用(Zepto是一个对象)
  6. 右边的赋值操作必须加括号,否则会 Error

其他类似例子如

var example1 = true && 'Hello World';//'Hello World'
var example2 = (function(){return 1;},function(){return 2;})();//2
征﹌骨岁月お 2022-09-08 16:10:21

,这一句本身是个会返回true或false的表达式

A || B如果表达式A为真则返回真,如果A为假则返回B的返回值。

从应用上来说,一般B是一条希望当A为假时执行的语句。这里判断$有没有在window里定义,没有就给$赋上值

梦过后 2022-09-08 16:10:21

第一句是将封装好后的zepto暴露到全局,这样zepto才能在全局作用域被调用。
第二句是如果window没有有$这个属性,那么将$赋值window.$,用途是防止库冲突。
这里的逻辑运算符的作用是根据左侧表达式的布尔值来决定要不要接着执行右边的表达式。

梦明 2022-09-08 16:10:21

或者,逻辑运算符

起风了 2022-09-08 16:10:21

短路运算符 第一个为真 不执行下一表达式 第一个为假 执行下面表示

我ぃ本無心為│何有愛 2022-09-08 16:10:21

这个叫做短路表达式,是编译器为了优化编译过程采取的行为。如 false && (i++); 由于逻辑与只要一项为假,结果就为假,所以i++不会执行。如 true || (i++),也是同样的道理

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文