我最近在facebook上运行的一个脚本上看到了这段代码:
__d("Shaka", [], function a(b, c, d, e, f, g) {
c.__markCompiled && c.__markCompiled();
var h = {};
对于那些以C#作为主要开发经验背景的人,我无法提醒,但注意到c.__markCompiled && c.__markCompiled();
行看起来很奇怪。我自己编写了相当多的javascript代码,但我唯一使用&&
的地方就是if
s,for
,while
等内部条件等等。这句话的作用是什么,背后的逻辑是什么?
答案 0 :(得分:4)
该行
c.__markCompiled && c.__markCompiled();
实际上与
相同if (c.__markCompiled) c.__markCompiled();
&&
运算符仅在左侧的评估为真值(即undefined
,null
,{{1}时评估其右侧}},0
,""
或NaN
)。
答案 1 :(得分:1)
&&
运算符与if
语句中使用的运算符相同。
如果if
中的所有元素都与&&
相互比较,则只要达到false
值就会停止。
永远不会执行
false && some_function();
每次都会执行
true && some_function();
你甚至可以测试一个函数,如果是,则调用其他函数
test_me() && call_if_true();
它与:
相同if (test_me()) { call_if_true(); }
你也可以坚持下去:
test1() && test2() && some_thing() && something_else();
最后一个会在达到等于false
的值时停止。
Javascript是一个美女...