最近 JavaScript (NodeJs) を勉強しています
for を使用して JsonArray を走査するときに問題を見つけました
その時は次のように書きました:
論理的に言えば、このように書くのは間違っているはずです。正しいかどうかを判断するのは Null ですが、実行してみると実際に成功し、エラーは報告されず、出力は正常でした
黒い疑問符の顔...
これがどのように機能するのか教えてください...
できますか? obj2=obj1.result[i]
はブール値を返しますか? ?
私は以前に JAVA を学んだことがありますが、JavaScript は JAVA よりも厳密さが少し緩く、私の考えが少し閉じ込められているように感じます...
代入式は割り当てられた値を返します。つまり
obj2=obj1.result[i]
会返回obj1.result[i]
です。js は動的言語です。プライバシー変換の機能があります。つまり、特定のデータ型が必要な場合、事前に設定されたルールに従って受信値を特定の型に変換します。
あとは、代入式
obj2=obj1.result[i]
中返回值是obj1.result[i]
,那js引擎就会对obj1.result[i]
をブール型に型変換するだけです。あなたなら
obj1.result[i]
的值是除NaN
,0
,undefined
,null
,''
之外的其他值,都会转换成true
,否则则是false
。代入演算子の戻り値は代入された値です。これは、Java を含むすべての主要な C 言語で定義されています。
Java の条件判定ではブール値のみを使用できますが、JavaScript ではブール値が必要です。指定した値がブール値でない場合は、暗黙的にブール値に変換されます。
JavaScript は型付けが弱い言語なので、自動的に変換されます~
等号は代入を意味します。つまり、obj1.result[i] を obj2 に代入したことを意味するため、常に true になります
= == === の違いを検索すると、質問を読んだ後に理解できます