我在javascript文件中查看此函数:
function V(a, b) {
var e = d.isPlainObject(a.ajax) && a.ajax.dataSrc !== c ? a.ajax.dataSrc : a.AjaxDataProp;
return "data" === e ? b.aadData || b[e] : "" !== e ? B(e)(b) : b
}
有人可以解释一下return关键字的最后一个语句是做什么的吗? 我熟悉三元运算符。但我不明白这一行。
我不认为需要有关变量或函数的任何背景知识来解释声明的逻辑。
答案 0 :(得分:3)
只需写出来,所以它易于阅读,所以当e ="内容" B(e)(b)被退回
if("data" === e) //You end-up here when (e == "data")
return b.aadData || b[e];
else {
if("" !== e) //You end-up here when (e != "data" && e != "")
return B(e)(b); //B(e) returns a function which is invoked r_function(b)
else //You end-up here when (e == "")
return b
}
我的建议:在调试时不要使用te .min.js libs。大多数情况下,您可以使用未最小化/压缩的javascript文件,并且更容易调试/读取。
基础知识条件(三元)运算符
true ? "This goes out" : "This not"
false ? "This not" : "This goes out"
答案 1 :(得分:2)
return "data" === e ? b.aadData || b[e] : "" !== e ? B(e)(b) : b
这称为conditional (ternary) operator,其中:
条件:
"data" === e
检查e
var等于“data”,它是相同类型的“data”,所以是一个字符串;
如果是的话:
b.aadData || b[e]
返回b.aaDData
OR b[e]
;
如果错误:
"" !== e ? B(e)(b) : b
这是相同的条件(三元)运算符:如果e
var与“”不同,则返回B(e)(b)
,否则它会为您提供b
。