搜索
javascript - 一个JS语法的问题
PHP中文网
PHP中文网 2017-04-10 13:09:34
[JavaScript讨论组]
    //这个&&怎么理解你,是前面的变量为真,则赋值后面的函数吗?
    _blobSlice: $.support.blobSlice && function () {
        var slice = this.slice || this.webkitSlice || this.mozSlice;
        return slice.apply(this, arguments);
    }
PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
巴扎黑

&& 和 || 都是短路操作符:

a && b; 当a为真时,结果是b; 当a为假时,结果为a,并且不执行b.
a || b; 当a为假时,结果是b; 当a为真时,结果为a,并且不执行b.

大致是这样哈。

伊谢尔伦

从最简单的开始分析。

var t = a() && b()

引擎会首先计算 a() 的值,如果为假值(包括 false0nullundefined 等等),则将结果赋值给 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);

简单测试了下,结果是返回那个匿名函数
楼主的想法是正确的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号