質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.34%

関数で使用している変数を別の関数で動作を行う条件として使用したい

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 95

wing

score 7

前提・実現したいこと

else if(cmd==17)で使用しているcountの中身をelse if(cmd==20)のif文で使用したい。

該当のソースコード

ws.onmessage = function (event) 
{
var count = 0;
else if(cmd==17)
            {
                 var AccX_I16 = recData.getInt16(1,true); //(2)の処理
                 var AccX = AccX_I16*9.8*2.0/32768.0;    //(3)の処理
                 document.getElementById("AccX_Data").innerHTML = "AccX:"+AccX.toFixed(2);

                 if(AccX > 9.7)
                {
                    count == 1;
                }

                 if(AccX < -9.2)
                {
                    count == 2;
                }
            }

else if(cmd==20)
            {
                 var Gx_I16 = recData.getInt16(1,true);
                 var Gx = Gx_I16*250.0/32768.0;
                 document.getElementById("Gx_Data").innerHTML = "Gx:"+Gx.toFixed(2);

                if(count==1 || count==2)
                {
                 var canvas = document.getElementById("canvas1");
                 var ctx1 = canvas.getContext("2d");
                 ctx1.beginPath();
                 ctx1.fillStyle = 'rgb(0,80,255)';
                 var Px = 1.3328*Gx + 399.87;

                 if(Px < 60)
                 {
                     Px = 60;
                 }

                 if(740 < Px)
                 {
                     Px = 740;
                 }
                  //Py = 300;
                 ctx1.arc(Px,300,60,0,Math.PI*2,false);
                 ctx1.fill();

                }
}

別の関数で使用している、変数をrerutn等のソースコードを使用して、別の関数で同じ変数として使用したいのでどうすればいいでしょうか。自分で調べたり、考えたりしたのですが、方法が分かりませんs

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Lhankor_Mhy

    2021/01/13 23:53

    ご提示のコードは文法エラーになりませんか?

    キャンセル

回答 3

+1

そもそも、 cmd==17 分岐内の

count == 1;
count == 2;


は、何の意味もない記述なのだが、その辺は理解しているか?
==は代入ではなく比較だ。で、比較結果を何にも使っていないので、この行には何の意味もない。削除しても挙動は同じだ。

そのコードだと、onmessageのたびにcountが初期化されるので、使いまわしが効かない。
countをひとつ外側のスコープに置く(ws.onmessageの前の行にvar count=0を置く)事で値が維持され、使い回せるようになる。
名前が一般的すぎて、使っていたのを忘れてうっかり別の意味で使いそうで怖いので、もう少し長くて意味のある名前を使うことを強くお勧めするが(この変数は「なんの」カウントなのだ?)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

count をより広いスコープで定義する、ですかねぇ。
(いつ 0 に戻すのか、とか難しくなる気もしますが、具体的な処理は想像できてません)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

if(cmd==17||cmd==20){
 if(cmd==17){
  //17特有の処理
 }
 //17,20共有処理
}
if(cmd==20){
  //20の処理
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る