次のコードを考えてみましょう。
if (node.nextSibling.className == ...) {
...
}
ノードまたは node.nextSibling が空 (null) )、エラーが返されます。したがって、通常の解決策のコードは
if ((node) && (next = node.nextSibling) && ... ) {
...
}
次に、条件が 1 つ以上であると判断された場合、コードは次の状況を形成します
if (
(node) &&
(node.nextSibling) &&
(node. nextSibling) .className == ...)
... ) {
...
}
判定条件が増え続けると、コードは非常に「醜い」ものになります。
条件判定式を簡略化できるちょっとした「裏技」があります。
if ( next = (node || 0).nextSibling) ) {
...
として、空のオブジェクト ({}) またはゼロ (0) を追加できます。 }
上記のコードは次のように書くことができます
if (((node || 0).nextSibling || 0).className == ...) {
...
}
--Split--
個人的には、上記のコードはある観点から見ると非常に合理化されます。しかし、実際の日常的なコーディングプロセス、特に複数人で協力する場合、これらのコードは他の開発者に何らかのトラブルを引き起こす可能性があります。
Xiao Ma が言ったように、すでに特定のフレームワークを使用している場合は、特定の問題を詳細に分析する必要があります。たとえば、上記の条件判定コードは、YUI コーディングを使用して使用できます。
YAHOO.util.Dom.hasClass(el, className)
は、上記のコードよりも合理化され、簡単に見えます。 。 理解する。