JS三元运算和多条件运算

我们的代码在部署在线上之前,都要进行打包,打包之后的代码都是一段压缩之后的代码。可能有人会问了,这跟这篇文章的主题有什么关系呢?先别急,我们先看一下打包之后,开头的这段代码:

!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.anyizbrecord=e():t.anyizbrecord=e()}

上面压缩的代码看着费劲,那我把代码展开一下

!function(t, e) { 
    "object" == typeof exports && "object" == typeof module ? 
    module.exports = e() : 
    "function" == typeof define && define.amd ? 
    define([], e) : 
    "object" == typeof exports ? 
    exports.anyizbrecord = e() : 
    t.anyizbrecord = e() 
}(window,(function(){})())

可以看到里面有“很多”三元表达式。这就引出我们这篇文章的主题了。

我们先看一下三元的用法:
1、基本语法:
条件 ? 表达式1 : 表达式2

含义:条件为 true ,执行表达式1,为 false 执行表达式2

2、多条件运算
条件1 ? 表达式1 : 条件2 ? 表达式2 : 条件3 ? 表达式3 : 表达式4

含义:当条件1为true执行表达式1,条件1返回false,执行条件2,条件2返回false,执行条件3,条件3如果返回true,则执行表达式3,否则执行表达式4,以此类推。(当然这种方式也可以通过 if() else if() else() {} 来实现,多条件运算显得更简洁)

结合多条件运算我们分析一下这段代码

!function(t, e) { 
    "object" == typeof exports && "object" == typeof module ?    条件1  // commonjs规范
    module.exports = e() :   表达式1
    "function" == typeof define && define.amd ?   条件2   // AMD 规范
    define([], e) :   表达式2
    "object" == typeof exports ?   条件3    // commonjs规范
    exports.anyizbrecord = e() :  表达式3 
    t.anyizbrecord = e()       表达式4    //   浏览器全局变量(在window上定义全局变量)
}(window,(function(){})())

通过上面 多条件运算中的含义,我们知道上面代码的执行顺序,得到了最终实现的效果:
根据定义的方法来确定不同的加载规范,这样就可以兼容各种加载规范了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值