3

私はいくつかのコードでその行を見ました

window.a = window.b = a;

それはどのように機能しますか?

次は常にtrueを返しますか?

window.a == a

4

6 に答える 6

10

その意味は

window.b=a;
window.a=a;

またはあなたは言うことができます。

window.b=a;
window.a=window.b;

1つのステートメントで2つの割り当て

後もう一つ

window.a ==そうですか?

はい、これは正しいです。trueを返します

于 2012-12-03T09:00:13.833 に答える
2

この割り当ては右から左に実行されるため、最初に「window.b」に「a」値が割り当てられ、次に「window.a」に「windows.b」値が割り当てられます。

このようにこの複数の割り当てを解除して、同じ結果を得ることができます。

window.b=a;
window.a=a;

また、スコーピングのようなものにも注意する必要があります。このコードをグローバルスコープで実行する場合、たとえば次のような単純なスクリプト:

<script>
    var a = 10;
    window.a = window.b = a;
</script>

'a'と'window.a'は同じ変数であるため、window.a==aはtrueです。「a」は実際には「window」オブジェクトのプロパティです。すべてのグローバル変数は、「ウィンドウ」オブジェクトのプロパティです。あなたがこのようなコードを書くことができることを知っていると、このコードは対応します:

<script>
    var a = 10;
    a = b = a;
</script>

ただし、このコードを関数に入れると、関数スコープで実行されます。例:

<script>
    function ex() {
        var a = 10; // this is local variable
        window.a = window.b = a; // this time window.a != a
    }
</script>
于 2012-12-03T10:15:20.473 に答える
1

と同じ:

window.b = a;
window.a = a;

そして、いいえ、そして常に等しいとは限りませんwindow.aa通常、これはWebブラウザーのJavaScriptインタープリターのグローバルスコープでのみ等しくなります。

于 2012-12-03T09:00:25.650 に答える
1

ウィンドウのプロパティabプロパティは、の値に割り当てられていますa。はい、このコードがグローバルスコープで実行され、同じawindow.aある場合。

var a = "foo";

//window.a and a are the same variable
window.a = "bar";
a; //bar

function f(){
    var a = "notfoo";

    //window.a is a different variable from a, although they may take the same value
    window.a = "baz";
    a; //notfoo
}
于 2012-12-03T09:01:10.883 に答える
0

それは同じです:

window.b=a;
window.a= window.b;

この場合、上記のステートメントの後、window.a==aが真になります。たとえば、aがグローバル変数の場合、falseになる場合があります。

そしてもう1つ、次回の質問について、より有益なタイトルを見つけてください。

于 2012-12-03T09:04:40.150 に答える
0

実際には、値がのwindow.a==a場合はfalseになる可能性があります。それは、それ自体を含め、どの値とも等しくないためです。aNumber.NaNNumber.NaN

于 2013-01-09T08:53:42.653 に答える