アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者の質問ですみません。
以下のような簡単なコードですが、うまく行かないのでアドバイスをお願いしますm(__)m
------------------------------------
★ //
function plus1() {
var a = 5;
a++;
console.log (a);
}
plus1();
------------------------------------

plus1()を実行するたびにaの値が1ずつ増えていくようにしたいのですが、これだと何回実行しても6のままで更新されません。
ちなみに、 var a = 5; の行を★の位置(関数定義の前)に持っていっても結果は変わらずです。

関数実行するたびに、6,7,8... と増えていくようにするにはどのように書けば良いのでしょうか?

A 回答 (2件)

> var a = 5; の行を★の位置(関数定義の前)に持っていって


これで出来ます。

var a = 5;
function plus1() {
a++;
console.log (a);
}

出来ないとしたら、実行環境が普通でないのでしょう。
どんな風に実行していますか?
    • good
    • 1
この回答へのお礼

すみません、勘違いでした。
plus1() を一回しか書かずに、ブラウザをリロードするたびに1ずつ増えていくのかと勘違いしていました。

お礼日時:2020/07/21 00:01

こんにちは



すでに回答はでていますが・・・
plus1の実行時にaの定義が実行されると、毎回aは初期値になってしまうのでご希望のようにはなりません。
逆に言えば、aの初期値設定をplus1の外で行っておけば良いということになります。

>var a = 5; の行を★の位置(関数定義の前)に持っていっても結果は変わらずです。
それで、大丈夫なはずですけれど・・・??
ひょっとして、plus1内の「var a = 5;」を削除するのを忘れていたりしませんか?


記述法は他にもいろいろあると思いますが、変数aをグローバルにしない一例として・・・
let plus1;
((a=5)=> { plus1 = ()=>{ console.log(++a); }})();

plus1(); // 6
plus1(); // 7
plus1(); // 8

とか。
    • good
    • 0
この回答へのお礼

すみません、勘違いでした。
例の式はちょっと私には難しいです。

お礼日時:2020/07/21 00:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!