理解这个JavaScript语句

时间:2014-09-16 13:48:14

标签: javascript

我在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关键字的最后一个语句是做什么的吗? 我熟悉三元运算符。但我不明白这一行。

我不认为需要有关变量或函数的任何背景知识来解释声明的逻辑。

2 个答案:

答案 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];

之间的OR条件
  

如果错误:

"" !== e ? B(e)(b) : b

这是相同的条件(三元)运算符:如果e var与“”不同,则返回B(e)(b),否则它会为您提供b