• ベストアンサー

JavaScript言語のことで・・

zzzzzzの回答

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.4

=関係の演算子については、 1.a=b bの値をaに代入する。bがオブジェクト参照の場合はaが同じオブジェクトを参照するようにする。 式の値はbの値です(b自身ではない)。従って、a = b = 1;のような記法が可能です。 2.a==b aとbが同じ値かどうかを型変換を含めて判定する。オブジェクト参照の場合には同じオブジェクトを参照しているかどうかを判定する。 判定結果はboolean型。 3.a===b aとbが同じ値かどうかを型変換をせずに判定する。 判定結果はboolean型。 2と3の違いは、 1 == "1" はtrue 1 === "1" はfalse です。 なお、下にもかきましたが、#2さんのご回答は、厳密には誤りですので注意してください。

関連するQ&A

  • javascriptのarertについて

    最近javascriptの勉強を始めたのですが, var i = 3; arert = ("i"); とか var j =[1, 2, 3] arert = ("j[2]") などしますと、数字ではなくて、iなどの文字が表示されてしまいますよね? またfor(i=0; i<5;i++){ var sample_i = i } などしても多分sample0~sample_4まで定義したことにはなりませんよね? そこで質問なんですが、javascriptではこういった文字と数字をどうやって判別してるんでしょうか? また上の例のコードを書き直してくれたら嬉しいです。

  • JavaScript、;がない?

    Google Apps Scriptでプログラムを書きました。 すると、「ステートメントの前に;がありまあせん。(行6、ファイル「コード」)」と表示されます。 プログラムは、以下のとおりで、6行目とは、「If」文のところです。 しかし、私には、そのようなエラーが出ている理由が分からないのですが、どなかたお教えください。 function myFunction() { var s = SpreadsheetApp.GetActiveSheet(); var l = s.getMaxRows(); for (var i = 1; i < l; i = i + 1) { for (var j = 2; j <= l; j = j + 1) { If (s.getRange(i, 1).getValue == s.getRange(j, 1).getValue && s.getRange(i, 2).getValue == s.getRange(j, 2).getValue) { s.getRange(j, 1: j, 2).setBackgroundColor('aqua'); } } } }

  • JavaScriptで九九

    繰り返し処理を用いて画像のように表示させたい場合はどこを修正すればいいですか? <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>九九</title> </head> <body> <script> for (var i = 1; i <= 9; i++) { for (var j = 1; j <= 9; j++) { document.write(`${i} * ${j} = ${i*j}<br/>`); } } </script> </body> </html>

  • for文での変数宣言について(他言語共通)

    for(var i = 0; i < 9; i++) { } このように、for文の()内で変数宣言をすることがあるだろうと思います。 これを入れ子にするのならば当然(場合にもよりますが) for(var i = 0; i < 9; i++) { for(var j = 0; j < 9; j++) { } } このように、新しい変数を定義します。 しかし、次のように、2つのfor文が並列する場合、2つ目のfor文で変数宣言をすべきではありません。 ですが、 片方だけに宣言がある・for文の外に宣言がある・2つ目のfor文には別の変数を宣言する いずれもしっくり来ません。 どのように書くのが一般的なのでしょうか。 皆様の書き方をご投稿ください。よろしくお願いします。 //ここでvar i = 0;と書くか … A for(i = 0; i < 9; i++)//ここでfor(var i = 0; i < 9; i++)と書くか … B { } for(i = 0; i < 9; i++)//ここでfor(j = 0; j < 9; j++)と別の変数を定義するか … C { } //または、いずれでもない回答者様のオリジナルの書き方 ※この例では、1つ目のfor文が終わった時点でiの値を保持する必要はありません。

  • javascript 初心者です 変数について

    javascript 初心者です 変数について html内のbodyに次のように記述しています。 <script type="text/javascript"> <!-- var hensu1=7; var hensu2=2; var hensu3=5; var hensu4=4; for(i=1;i<=4;i++){ document.write("<div>"); for(j=1;j<="hensu"+i;j++){ document.write("<img src='sample.png'/>"); } document.write("</div>"); } --> </script> for(i=1;i<=4;i++)でdivを4つ並べ、 その中にそれぞれsample.pngをhensu分だけ並べ対のですが、 for(j=1;j<="hensu"+i;j++)の部分で "hensu"+i の記述の仕方が分からず、 上記の書き方だと表示されません。 正しい書き方を教えていただけないでしょうか?

  • C言語について

    C言語の問題なのですか、作成したのですが内容がわからないです。テキストを読んでも解説が書いていないので、出来ればどなたか簡単な解説でも教えて頂けるとありがたい。 〈7-3〉 #include <stdio.h> int main(void) { int i, j; long kuku[9][9]; // 九九の値の代入処理を記述 for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { kuku[i][j] = (i + 1) * (j + 1); } } ///////////////////////////////////// // 九九の表示部(ここは変更しないこと) for (i = 0; i < 9; i++) { for (j = 0; j < 9; j++) { printf(" %2d", kuku[i][j]); } printf("\n"); } return 0; }

  • 【C言語】二重forループ内でscanfを使ってchar型変数に数値(

    【C言語】二重forループ内でscanfを使ってchar型変数に数値(%d)を入力すると、きちんとループ処理されないのはなぜ? プログラムを下に用意しましたのでご覧下さい。 二重forループ内で入力を繰り返すプログラムです。 ついでに i j の値を出力するようにしました。 -----------------プログラム---------------- int main (void){ char input = 0; // 入力値 char型にするとforループでインクリメントエラー(int型にすると問題ない) int i = 0, j = 0; , printf("数値を入力して下さい。('-1' で入力終了)\n"); for( i=0 ; i<3 ; i++ ){ // i がちゃんとインクリメントされない for( j=0 ; j<3 ; j++ ){ scanf("%d", &input); // char 型変数に %d で入力すると、i がきちんとインクリメントされない printf("[i][j] = [%d][%d]\n", i, j); if( input == -1 ){ printf("入力を終了します。\n"); break; } } if( input == -1 ) break; } return 0; } ---------------------------------------- ---------実行結果(入力値はchar型)--------- 数値を入力して下さい。('-1' で入力終了) 1 2 3 4 5 6 7 8 9 [i][j] = [0][0] [i][j] = [0][1] [i][j] = [0][2] [i][j] = [0][0] [i][j] = [0][1] [i][j] = [0][2] [i][j] = [0][0] [i][j] = [0][1] [i][j] = [0][2] -1 [i][j] = [16777215][0] 入力を終了します。 ---------------------------------------- ----------実行結果(入力値はint型)---------- 数値を入力して下さい。('-1' で入力終了) 1 2 3 4 5 6 7 8 9 [i][j] = [0][0] [i][j] = [0][1] [i][j] = [0][2] [i][j] = [1][0] [i][j] = [1][1] [i][j] = [1][2] [i][j] = [2][0] [i][j] = [2][1] [i][j] = [2][2] ---------------------------------------- ご覧の通り、char型変数に値を入力しているために、forループで i がきちんとインクリメントされません。 入力値は -128~127 の値しか想定していないので、メモリの消費を少しでも抑えようと思いchar型で宣言したのですが、思わぬ所でおかしな挙動が起こってしまいました。 int型で宣言すればいいだけなのですが、なぜこんな挙動になるのか知りたいです。 よろしくお願いします。

  • 教えてください。javascriptで困っています

    javascript初心者です。たくさんある変数をfor文を使って計算させたいと思っています。計算はfor分の中でしたいのですが、うまくいきません。以下のようなことをしたいのですが。evalなどを使うのでしょうか。調べるキーワードがわからなかったので、投稿させていただきました。教えてください。よろしくお願いします。 var x1=1; var x2=2; var x3=3; var x4=4; var x5=5; var y1=1; var y2=2; var y3=3; var y4=4; var y5=5; var z1; var z2; var z3; var z4; var z5; for(var i=0 i<5 i++){ "z"+i = "x"+i + "y"+i; } alert(z1); alert(z2); alert(z3); alert(z4); alert(z5);

  • JavaScriptについての質問です。

    ガウスの消去法による解の求め方をプログラムしたいのですが、上手くいかなかったので質問しました。以下のプログラムから実行はできるのですが、解が求められていませんでした。 どこを変えればきちんとできるのでしょうか、回答お願いします。 var A=[[1,-1,1],[1,2,0],[2,0,3]],b=[5,1,9]; WScript.Echo("ガウスの消去法の解:\n"+Gauss(A,b)); function Gauss(A,b) { var s,x=new Array(A.length),M=new Array(A.length); for(var i=k+1;i<A.length-1;k++) { for(var i=k+1;i<A.length;i++) { M[i]=new Array(A.length); M[i][k]=(A[i][k])/(A[k][k]); for(var j=k+1;j<A.length ;j++) A[i][j]=A[i][j]-(M[i][k]*A[k][j]); b[i]=b[i]-(M[i][k]*b[k]); } } for(var i=A.lengh-1;i>=0;i--) { s=0; for(var k=i+1;k<A.length;k++) s+=A[i][k]*x[k]; x[i]=(1/A[i][i])*(b[i]-s); } return x; }

  • 超初心者です。HowTo本"独習C"の内容について

    Cを勉強し始めてまだ3日なのですが、 参考書の内容でどうしても理解できない箇所があります。 周りに聞ける人がいないのでここでみなさんにお聞きしてみました。 以下、2つのプログラムでわからない場所があります。 /* 2から1000までの素数を求める */ #include <stdio.h> int main(void) { int i,j,prime; for(i=2;i<1000;i++){ prime=1; for(j=2;j<=i/2;j++) if(!(i%j)) prime=0; if(prime) printf("%dは素数です\n",i); } return 0; } iをjで割ったときに余りが0でなければ素数だということはわかるのですが、 for(j=2;j<=i/2;j++) この行の意味が分かりません。 これはiが2から1000までインクリメントされる間になにをしているのでしょうか? 条件判定部 j<=i/2 はどういった解釈をしたらよいのか分かりません。 あと、本当に基礎的なことなんですがiが2から1000までインクリメントされるのは1回なのですか? jが2の時にiが1から1000、jが3の時にiが1から1000という意味ではないですよね。 あくまでiが2から1000までインクリメントされるループは1回限りで、その中でjの式が実行されるということですよね。