在深入研究jQuery源代码时,你可能会发现一些看起来有些奇怪的代码。例如,以下代码:
var a = 5; var b = 10; var c = (a != b) ? "Hello" : "World";
尤其是那个 (a != b) ? "Hello" : "World"
部分。这是一个JavaScript中的三元运算符,也称为条件运算符。它的语法如下:
condition ? exprIfTrue : exprIfFalse
如果 condition
的值为真,则执行 exprIfTrue
,否则执行 exprIfFalse
。
在上面的示例代码中,(a != b)
是条件,如果 a
不等于 b
,则 c
的值为 "Hello"
,否则 c
的值为 "World"
。
但是,在jQuery源代码中,我们经常看到类似于以下代码的使用:
var a = b = 1, c = d = 2; var result = (a != null ? a : b) != null ? (a != null ? a : b) : (c != null ? c : d);
这里涉及到了两个连续的三元运算符,但是它们使用的是相同的条件 (a != null ? a : b) != null
。什么意思呢?
首先,让我们解析第一个三元运算符:
(a != null ? a : b)
这意味着,如果 a
不是 null
,那么 result
的值将为 a
,否则将为 b
。
接下来,让我们看看第二个三元运算符:
(result != null ? result : (c != null ? c : d))
这里的条件是 (result != null)
,它先检查了上一个三元运算符的结果。如果 result
不是 null
,那么结果就是 result
,否则会检查 c
和 d
。如果 c
不是 null
,那么结果为 c
,否则为 d
。
这种用法的好处是什么呢?首先,它可以使代码更简洁,因为相同的条件只需编写一次。其次,它可以保证 result
变量始终有一个非 null
值。
在学习前端开发时,我们应该多留意jQuery源代码中的奇怪语法,并通过阅读和分析源代码来提高自己的编码技能。同时,在编写自己的代码时,也应该思考如何用更简洁的方式来表达相同的逻辑。
示例代码:
-- -------------------- ---- ------- --- - - -- --- - - --- --- - - -- -- -- - ------- - -------- --------------- -- -- ------- --- - - ----- --- - - --- --- - - -- -- ---- - - - --- --------------- -- -- -- --- - - - - -- - - - - -- --- ------ - -- -- ---- - - - -- -- ---- - -- -- ---- - - - -- - -- -- ---- - - - --- -------------------- -- -- -
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/14991