我需要了解一些代码。我对Java,C ++,PHP的语法感觉很好,但是Javascript语法仍然是一个"黑暗的森林"为了我。以下是原始形式和可能的解释,我的意思是程序逻辑方面的等价物:
1
var o,
a,
s = "https://widget.kiwitaxi.com",
c = e.createElement("iframe"),
l = e.getElementById(r.target),
p = r && r.height_bias ? 4 + r.height_bias : 4,
u = !1,
f = parseInt(r.min_height, 10) ? parseInt(r.min_height, 10) : r.hide_form_extras && !r.default_form_title ? 304 : 386;
我几乎可以肯定这个,在这里我可以用分号替换逗号并将VAR语句添加到每行的开头,它会产生相同的结果,我是对的吗?
var o;
var a;
var s = "https://widget.kiwitaxi.com";
var c = e.createElement("iframe");
var l = e.getElementById(r.target);
var p = r && r.height_bias ? 4 + r.height_bias : 4;
var u = !1;
var f = parseInt(r.min_height, 10) ? parseInt(r.min_height, 10) : r.hide_form_extras && !r.default_form_title ? 304 : 386;
据我所知:
最后一个,在最后一个逗号之后,r.banner_id || (r.banner_id =" 22995c4e");这是一项任务,很清楚,但这一部分的其他内容有什么意义呢?这里的条件是由条件进行的(如果r.banner不是undefined-or-null-or-false)?
o = s +" / w", "恩" == r.language&& (o + =" - " + r.language.toString()。toLowerCase()), (" biletik" == r.theme ||" ostrovok" == r.theme)&& (o + =" - " + r.theme.toString()。toLowerCase()), o + =" .html", r.banner_id || (r.banner_id =" 22995c4e");
答案 0 :(得分:1)
"en" == r.language && (o += "-" + r.language.toString().toLowerCase()),
噢......这条线很棘手。
所以,例如:如果你要编写var myVar = false && thisFunctionThrowsError()
,如果函数被调用则会抛出异常,实际上不会返回错误 - 因为&符号之后的任何内容不会被评估。这被称为短路评估。在这种情况下,有人切断了他检查&&
比较结果的部分,并仅使用它来确定是否运行右侧。
所以,如果我写:
"biletik" == r.theme && (o += "-");
这意味着只有在o
时才会向r.theme == 'biletik'
添加短划线。
最后一行恰恰相反;它看起来像是一个懒惰的初始化器。如果r.banner_id
为null,则计算结果为false - 因此它会运行||
的第二部分,并将其初始化为22995c4e
。