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

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

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

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

Q&A

2回答

2963閲覧

forEachに引数を渡したい

tarotarotarotar

総合スコア41

JavaScript

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

0グッド

0クリップ

投稿2021/05/10 14:04

編集2021/05/10 14:06

下記のようにjsファイル内で関数外で定義したグローバル変数を他の、変数(showRelativeCallBack)の中の、関数(function)の中のforEach文に反映させることができません。
(できればforEachに直接引数を渡したいです。)

基本的な質問で申し訳ないのですが、よろしくお願いいたします。

js

1 2var trustId = 'trust'; 3 4~ 5 6var showRelativeCallback = function (data) { 7 8~ 9 10assets.forEach(asset => { 11 console.log(trustId); 12 // = undefined 13} 14 15~ 16 17} 18~

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

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

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

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

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

hoshi-takanori

2021/05/10 15:22

コードが断片的でよく分かりませんが、クロージャからグローバル変数 (に限らず、クロージャを定義したスコープから見える変数) には普通にアクセスできると思いますけど…。
think49

2021/05/11 00:39

tarotarotarotarさん サンプルコードは命題が必要とされるコード(スコープ上に当該変数が存在しない)に修正したほうが良いです。 クロージャを歓迎しない気持ちは分かります。 また、コードは省略せずにそれのみで動く形にすると更に良いです。 言葉で説明して理解されないようですとコードを書かなければならず、足りないコードを回答者が補完しなければならなくなります。 補完したコードが質問者の意図と異なる場合は無駄に時間を消費することにもなります。 https://ja.stackoverflow.com/help/minimal-reproducible-example
guest

回答2

0

Array.prototype.forEach()

Array.prototype.forEach の第二引数で this 値を束縛可能です。

JavaScript

1'use strict'; 2function eachfn (asset) { 3 console.log(this, asset); 4} 5 6function main () { 7 var assets = [1,2,3,4,5]; 8 var trustId = 'trust'; 9 10 assets.forEach(eachfn, trustId); 11} 12 13main();

Function.prototype.bind()

Function.prototype.bind で引数を束縛可能です。

JavaScript

1'use strict'; 2function eachfn (trustId, asset) { 3 console.log(trustId, asset); 4} 5 6function main () { 7 var assets = [1,2,3,4,5]; 8 var trustId = 'trust'; 9 10 assets.forEach(eachfn.bind(undefined, trustId)); 11} 12 13main();

Re: tarotarotarotar さん

投稿2021/05/10 14:09

編集2021/05/11 00:47
think49

総合スコア18164

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

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

tarotarotarotar

2021/05/10 14:23

ありがとうございます! 第2引数はどの様に設定すればよろしいでしょうか?? 無知ですみません。。。
guest

0

今の条件だけ見る限り普通に参照できます

javascript

1var trustId = 'trust'; 2var showRelativeCallback = function (data) { 3 const assets=["a","b","c"]; 4 assets.forEach(asset => { 5 console.log([asset,trustId]); 6 }); 7} 8showRelativeCallback();

逆にできないのであれば例示が必要です

投稿2021/05/11 00:13

yambejp

総合スコア114843

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問