0

フレームワークとして AngularJS を使用しており、Web サービスに接続して JSON データを取得しています。次のコードがあります。

$login.onlineLogin($scope.credentials).
    success(function (data, status, headers, config) {

        if (data !== null ) {
            console.log('Successful Login!');
            console.log('Returned data: ' + data);
        } else {
            console.log('Failed to Login...');
        }

    }).
    error(function (data, status, headers, config) {
        console.log('HTTP Error...');
    });

ここで、HTTP 呼び出しが戻ってきたとき、ステータスは 200:OK のままである可​​能性がありますが、返されるオブジェクトは null である可能性があります。たとえば、ユーザーが間違ったユーザー資格情報を提供した場合です。その場合に私が期待しているのは、オブジェクトが null でない場合、「Successful Login!」と出力されることです。次に、オブジェクトを印刷します。

ただし、現在起こっていることは、偽の資格情報を使用しているため、Web サービスが null を返すことです。しかし、それでも「ログインに成功しました!」印刷された後、「返されたデータ:null」が表示されます...これは意味がありません。データが null の場合、そのコード ブロックで終わることさえありませんでしたか?

4

3 に答える 3

2

== と === には違いがあります。JavaScript には、厳密な (===) 等価比較と型変換 (==) 等価比較の両方があります。

2 つの文字列は、同じ文字シーケンス、同じ長さ、および対応する位置に同じ文字を持っている場合、厳密に等しくなります。数値的に等しい (数値が同じ) 場合、2 つの数値は厳密に等しくなります。NaN は、NaN を含め、何とも等しくありません。正のゼロと負のゼロは互いに等しくなります。2 つのブール オペランドは、両方が true または両方が false の場合、厳密に等しくなります。2 つのオブジェクトが同じオブジェクトを参照する場合、それらは厳密に同等です。Null および未定義の型は == です (ただし、=== ではありません)。[つまり、Null==Undefined (ただし、Null===Undefined ではない)]

if (data != null ) {
          console.log('Successful Login!');
          console.log('Returned data: ' + data);
        } else {
          console.log('Failed to Login...');
        }
于 2015-08-25T06:34:14.257 に答える
2

それ以外の

if (data !== null ) {
    .....
}

これを使って

if(data) {
    ....
}

""これにより、空の文字列 ( )、nullundefinedfalseおよび数字0とがチェックされますNaN

于 2015-08-25T06:35:21.917 に答える