2

これが私のサンプルコードです - http://jsfiddle.net/JRqq3/

0/1 の代わりに true/false を出力するのはなぜですか?

コード -

x = 1;
for(i = 0; i < 20; i++) {
    x = !x;    
    $("body").append(x+"<br />");
}​
4

5 に答える 5

21

なぜなら !演算子は、ジョブを実行するときに値を bool に強制します。

于 2012-08-03T13:38:20.000 に答える
12

なぜなら "!" 演算子は、変数の型を bool にキャストします。あなたはおそらくやりたい:

for (let i = 1; i <= 20; ++i) {
    $("body").append( String(i % 2) + '<br />');
}​

ここで何が起こっているのですか?%モジュロ除算演算子です。「2 で割った余りを返すi % 2」という意味です。i

i % 2は常に 1 または 0 のいずれかです (2 で割った剰余は常に 0 または 1 です)。

于 2012-08-03T13:38:55.963 に答える
4

!ブール論理演算子であり、ブールを返します。/をtrue/にfalse戻すには、単項演算を使用できます。10+

x = 1;
for(i = 0; i < 20; i++) {
    x = +!x;    
    $("body").append(x+"<br />");
}​

ただし、@ Miszyのmod 2 演算子に対する答えは、よりエレガントで簡潔です。

于 2012-08-03T13:43:15.430 に答える
4

評価x = !x;することで、タイプを整数ではなくブール値に変更しているためです。

于 2012-08-03T13:38:31.317 に答える
4

否定演算子のため! .

引数が true の場合は false を返し、その逆も同様です。

この場合、最初に 0 が false にキャストされ、1 が true にキャストされます。次に、これらの値は無効になります。

于 2012-08-03T13:39:15.587 に答える