我无法使用这个条件表达式
<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->
而这个没有!
之前=
的作品完美
<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->
有什么问题?我没有收到任何错误!=
,尽管在其他条件下不起作用||
,但适用于单一条件。
我无法使用这个条件表达式
<!--#if expr="$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html" -->
而这个没有!
之前=
的作品完美
<!--#if expr="$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html" -->
有什么问题?我没有收到任何错误!=
,尽管在其他条件下不起作用||
,但适用于单一条件。
这是因为=
和!=
几乎不是同一个运算符。请注意,根据德摩根定律(我也在这篇旧帖子中解释过),
a != b || c != d
相当于
a = b && c = d
这对于where永远不会正确。x = a && x = b
a != b
更改二元运算符也需要更改条件以使其等效。
因此,根据上述逻辑,
$DOCUMENT_NAME!=index.html || $DOCUMENT_NAME!=links.html
相当于
$DOCUMENT_NAME=index.html && $DOCUMENT_NAME=links.html
这不可能是真的,因为 $DOCUMENT_NAME 可以是 "index.html"或"links.html" 但不能同时是两者。
然而,第二个片段,
$DOCUMENT_NAME=index.html || $DOCUMENT_NAME=links.html
“有效”,因为没有上面提到的逻辑永远不正确的谬误。当 $DOCUMENT_NAME是“index.html”或“links.html”时,它会是真的。
一些语言/价值观会违反上述等价性..但这是另一个话题。