window.Zepto = Zepto;
'$' in window || (window.$ = Zepto);
|| 这个是什么意思?
或
,这一句本身是个会返回true或false的表达式
A || B
如果表达式A为真则返回真,如果A为假则返回B的返回值。
从应用上来说,一般B是一条希望当A为假时执行的语句。这里判断$有没有在window里定义,没有就给$赋上值
第一句是将封装好后的zepto暴露到全局,这样zepto才能在全局作用域被调用。
第二句是如果window没有有$这个属性,那么将$赋值window.$,用途是防止库冲突。
这里的逻辑运算符的作用是根据左侧表达式的布尔值来决定要不要接着执行右边的表达式。
这个叫做短路表达式,是编译器为了优化编译过程采取的行为。如 false && (i++); 由于逻辑与只要一项为假,结果就为假,所以i++不会执行。如 true || (i++),也是同样的道理
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
如果在一个逻辑表达式中遇到一个非布尔类型的操作数,那么该操作数的值就会成为该表达式所返回的结果
在题主例子中,可以如下分析:
'$' in window
是判断window
是否有$
属性,in
返回ture
或false
true
,||
操作符会偷懒,不会计算后面的window.$ = Zepto
true
false
,会继续进行计算,这时候就会给window
创建一个$
属性,并且引用Zepto
Zepto
的引用(Zepto
是一个对象)Error
其他类似例子如