Javascriptでのこの行の解釈は何ですか?1行の解釈Javascriptコード
var x[],matrix[],n;
...
n = (matrix = x) && matrix.length;
私はそれを検索しましたが、ヒントが見つかりませんでした。
ありがとうございました それはこの行いJavascriptでのこの行の解釈は何ですか?1行の解釈Javascriptコード
var x[],matrix[],n;
...
n = (matrix = x) && matrix.length;
私はそれを検索しましたが、ヒントが見つかりませんでした。
ありがとうございました それはこの行い:
x
matrix
の値を割り当てます。 matrix = x
式の結果は割り当てられた値です(これはすべての代入式に当てはまります)。その値を「x値」と呼ぶことにしましょう。 x
は一度しか評価されていないので、ここからx
と呼ぶことは望ましくありません。n
にmatrix.length
を割り当てます。それ以外の場合は、x値をn
に割り当てます。x
が[]
であれば、例えば、コードは、同じ空の配列x
を行い、n
(割当後matrix.length
)0
にセットを指すようにmatrix
を設定します。他の例(あなたがあなたの質問を編集した前に、私はこれらを書いた):x
が"foo"
であれば、それは"foo"
にmatrix
を設定し、3
にn
を設定します(matrix
のlength
)。 x
は""
(falsy値)である場合、それはmatrix
""
およびセット""
にn
設定します。 x
が{foo:"bar"}
の場合は、同じオブジェクトを参照するようにmatrix
を設定し、オブジェクトにはlength
というプロパティがないため、n
〜undefined
と設定します。あなたはその考えを得る。
上記の#2は、&&
が単なる論理AND演算子ではないためです。このようなa && b
作品:
a
を評価。 b
を評価し、&&
オペレータ&&
オペレータの結果は値である
"真偽値"は、 "偽"でない値です。偽値は、0
,null
,undefined
,,NaN
、もちろんfalse
です。
(matrix = x)
は、x
の変数matrix
への割り当て操作です。ここではx
は配列なので、この演算の結果は真理値を与え、したがって後の部分が起こります。
など。場合
は動作しませんので、(matrix = x)
は偽の操作です。 n
にはundefined
が割り当てられます(値はx
なので)。
"'(matrix = x) 'は偽演算です.nは' undefined'のままで、これは誤解を招くことがあります - 'n'は未定義ではないので' undefined'値が割り当てられます。もしも 'x'が' '' 'と等しければ、' 'n''は' '' 'になり、' 'n''が値を持っていれば' 'undefined''になります。割り当てによって値が変更されますが、具体的な例では以前と同じ値に変更されます。 – vlaz
@Vldを間違えて訂正。私の悪い。 '(matrix = x)'演算が偽値を返す場合、 'n'は' undefined'値に代入されます。更新されます。 – Ayan
実行してみましたか?結果は何でしたか?何があなたを驚かせた? – jonrsharpe
行列が長さの配列であり、xがxと等しい配列である場合、nはブール値になります。 – Kosch
'matrix = x; n = matrix && matrix.length; ' –