//这个&&怎么理解你,是前面的变量为真,则赋值后面的函数吗?
_blobSlice: $.support.blobSlice && function () {
var slice = this.slice || this.webkitSlice || this.mozSlice;
return slice.apply(this, arguments);
}
//这个&&怎么理解你,是前面的变量为真,则赋值后面的函数吗?
_blobSlice: $.support.blobSlice && function () {
var slice = this.slice || this.webkitSlice || this.mozSlice;
return slice.apply(this, arguments);
}
从最简单的开始分析。
var t = a() && b()
引擎会首先计算 a()
的值,如果为假值(包括 false
、0
、null
、undefined
等等),则将结果赋值给 t
,并且不再继续往右执行;如果是真值(包括 true
、非零数值、字符串、对象等等),那么就计算 b()
,并且把计算结果赋值给 t
。
var func = support && function () {
// ...
}
因此,这个表达式的作用就是在 support
为真的时候将一个函数赋值给 func
了。
或运算同理。
//这个&&怎么理解你,是前面的变量为真,则赋值后面的函数吗?
_blobSlice: $.support.blobSlice && function () {
var slice = this.slice || this.webkitSlice || this.mozSlice;
return slice.apply(this, arguments);
}
//这个其实不难理解,只要楼主搞明白JS短路现象。就很好理解这段代码。
//这段代码很明显:_blobSlice是个对象的方法,如果执行了它,
//首先要判断$.support.blobSlice的值是否为真,如果为真。
//则把后面的匿名函数赋值给_blobSlice并执行。
var test;
test = {
a: true && function() {
return 3;
}
};
alert(test.a);
简单测试了下,结果是返回那个匿名函数
楼主的想法是正确的
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
&& 和 || 都是短路操作符:
大致是这样哈。