実際、SO では、Java で回避することを忘れないようにアドバイスしif (a = b)
ましたが、a と b がブール値の場合にのみ有効であると誰かが思い出させてくれました。もちろん、このアドバイスは、C、C++、JavaScript、およびその他の多くの C に似た言語に適しています。
var v
同様に、 JavaScript にはブレース レベルのスコープではなく、関数レベルのスコープしかないことに最近気づきました。
どういうわけか、これは構文が似ていても動作が異なるという落とし穴です。
逸話として、Lua メーリング リストの一部の人々は、この言語は C に似ておらず、簡潔で見慣れた中括弧、+= および ++、ビット単位の演算子を使用していると不満を漏らしています。人々は C に似た構文に慣れているため、言語の採用に悪影響を与えると彼らは言います。
それはナンセンスです。Basic は、その冗長な構文で広く使用されていました (そして今でも使用されています)。Pascal (Delphià) も同様です。多くの人が Lua 構文を読みやすく、習得しやすく、プログラミングに慣れていない人 (ゲーム AI の専門家など) に適していると感じています。
さらに、要点として、Lua は C/C++ プログラムに統合され、C[++] 関数で拡張されるように設計されています。そして人々は、まったく異なる構文が考え方の変化に役立つと言います。