这的写法

 我来答
苏斯打趴
2022-12-03 · 混迹各大场所 见识万千广博
苏斯打趴
采纳数:920 获赞数:338

向TA提问 私信TA
展开全部

这里有三个地方你可能需要补习:
一、短路执行
如果一行代码为“A && B”,则只有A的值为true时,JS才会执行到B,否则不会执行B
相当于 if(A){B}
二、无效值
如果一行代码为“A=B||C”,则表示如果B是有效的值则A=B,否则A=C
那什么是无效值呢?就是与false等效的这几个值:0、空字符串、未定义的变量。
当B等于这几个值的时候,A就被赋值为C
三、三元运算符
如果一行代码为“A?B:C”,则表示如果A为true则执行B,否则执行C

用以上三点可以解释你的代码:

//先格式化一下
smAddToCart.add = function(a, b, c, d) {
0 != b && (
this.ele = a,
this.sku = b,
this.ptype = d || 1,
this.pcount = c || 1,
0 === this.addVersion && (this.addVersion = this.getAbTest()),
1 === this.addVersion ? this.versonModal() : 2 === this.addVersion && this.versonAnimate()
)
}


一、短路
当0!=b时,执行&&后面括号内的语句,否则这些语句都不会被执行。
0 === this.addVersion && (this.addVersion = this.getAbTest()) 这一行也是同样道理
二、无效值
“this.ptype=d||1” 表示当d的值为false、0、空字符串或未定义时,this.ptype就等于1,否则this.ptype=d。下面一行同样道理。
三、三元运算
1 === this.addVersion ? this.versonModal() : 2 === this.addVersion && this.versonAnimate()
表示如果1 === this.addVersion,则执行this.versonModal()方法,否则执行2 === this.addVersion && this.versonAnimate()方法
后面这个方法也是短路

//翻译成大家都能看懂的代码:
smAddToCart.add = function(a, b, c, d) {
if(0 != b){
this.ele = a;
this.sku = b;
if(d){
this.ptype = d ;
}else{
this.ptype = 1;
}

if(c){
this.pcount = c;
}else{
this.pcount = 1;
}

if(0 === this.addVersion){
this.addVersion = this.getAbTest();
}

if(1 === this.addVersion){
this.versonModal();
else{
if(2 === this.addVersion ){
this.versonAnimate()
}
}
}
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式