我需要了解下面的java脚本代码,由其他人编写。 能告诉我下面的内容是什么意思(尤其是第四行)。 它是一条冗长的线(直到;)。 这不是一个难题。 它是一个购物应用程序的代码,实际上在使用(未更改)。
function trackMetrics(a,b,c,d)
{
var e=a,f=b,g=c,h=d;
typeof a=="object"&&(a.type!=null&&(e=a.type),a.action!=null&&(e=a.action),a.data!=null&&f=a.data),a.map!=null&&(g=a.map),a.load!=null&&(g=a.load)),typeof f=="object"&&(f.data!=null&&(f=f.data),f.map!=null&&(g=f.map),f.load!=null&&(h=f.load)),typeof g=="object"&&(g.map!=null&&(g=g.map),g.load!=null&&(h=g.load));
答案 0 :(得分:2)
嗯,目前,这意味着SyntaxError
,因为它之前有一个不匹配的)
:
typeof f=="object"
但是,似乎是使用comma operator对多个语句进行分组(与;
进行分组)并使用&&
的{{3}}作为{的替代{ {1}}陈述。
if
答案 1 :(得分:0)
将它分解成碎片,逐个理解,然后你可以将整体的意义放在一起。
请注意&&当运算符达到假值(称为短路)时,它将停止处理以下条件。无论结果如何,逗号运算符都将使它们分离的每个表达式都被执行。这些代码一起使用它们在一行中进行大量逻辑测试和分配。 (这绝对可以说,“哎呀!”这里。)
typeof a=="object" // If a is of type "object"
&& ( // then
a.type!=null // if a.type != null
&&(e=a.type) // then e = a.type
,a.action!=null // if a.action != null
&&(e=a.action) // then e = a.action
,a.data!=null // ... and so on ...
&&f=a.data)
,a.map!=null
&&(g=a.map)
,a.load!=null
&&(g=a.load)
)
,typeof f=="object"
&&(
f.data!=null
&&(f=f.data)
,f.map!=null
&&(g=f.map)
,f.load!=null
&&(h=f.load)
)
,typeof g=="object"
&&(
g.map!=null
&&(g=g.map)
,g.load!=null
&&(h=g.load)
)
;
在查看之后,很容易认为它什么都不做,但是在某些条件中嵌入了赋值(例如g=a.map
)。因此,您需要处理逻辑(并希望理解其含义)以查看哪些条件将导致设置哪些值。