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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

939閲覧

スコープがあるがアクセスしたい場合わかりやすい方法はないでしょうか?

spablock

総合スコア49

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/05/04 06:44

下記のようにスコープの影響でlet mathRandom;の部分をわざと無名関数の外で宣言して、中で代入だけを行って、
他のスコープからアクセスできるようにすることが非常に多いのですが、
他人が見ると非常にわかりにくいです。
このような場合どのように対処しますか?
スコープがあるがアクセスしたい場合わかりやすい方法はないでしょうか?

let Position = () => { createElement.style.top = (mathRandom * 100) + '%'; } let mathRandom; let setClickItem1 = setInterval(() => { mathRandom = Math.random(); Position(); }, speed);

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードが意味のある形で抜き出されていないのでそもそもわかりにくいですが、引数を使えばよいのでは?

JavaScript

1let Position = mathRandom => { 2 createElement.style.top = (mathRandom * 100) + '%'; 3} 4let setClickItem1 = setInterval( () => { 5 Position( Math.random() ); 6}, speed );

投稿2017/05/04 06:53

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spablock

2017/05/04 07:01

let Position = () => { var mathRandom = Math.random(); createElement.style.top = (mathRandom * 100) + '%'; } じょうきのようになるという事でしょうか? 引数を使えば参照したい先に仮引数を書けばその中の式からアクセスできるようになるので、 スコープの問題がなくなるという事でしょうか?
spablock

2017/05/04 07:02

let Position = mathRandom => { createElement.style.top = (mathRandom * 100) + '%'; } はES6のアローファンクションで仮引数をmathRandomにしたという事でよろしいでしょうか? function(mathRandom) {} という事ですね。
spablock

2017/05/04 07:10

ありがとうございました。確かにできました。 引数は実質下記と同じと聞いていたので、なんのために存在するのかがわからなかったのですが、 別スコープから参照したい時にローカル変数を作るのではなく、引数を利用すると別スコープからも参照できるので、このような場合にローカル変数ではなく引数にする意味があるのですね。 let Position = () => { var mathRandom = Math.random(); createElement.style.top = (mathRandom * 100) + '%'; }
kei344

2017/05/04 07:17

ES6はまだ載っていないかもしれませんが、一度下記書籍などで体系立った知識を付けられればいかがでしょう。 【O'Reilly Japan - JavaScript 第6版】 https://www.oreilly.co.jp/books/9784873115733/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問