私は、私が設定したAPIゲートウェイを介してAWSでラムダを呼び出すことに取り組んでいる大きなプロジェクトを持っています。ラムダでは、私は動的に次を使用して、APIリクエストのクエリ文字列のparamに基づいて変数を呼び出すようにしようとしている:なぜNodeはこれが関数ではないと思うのですか?JavaScriptはときどきうまくいくのですか?
var functionToCall = event.queryStringParameters.tech;
console.log("functionToCall is " + functionToCall);
global[functionToCall](event, output);
残念ながら、私は私がしました
TypeError: global[functionToCall] is not a function
のエラーが出ますオンラインでそれを実証するためにウィンドウを使ってこれを書き換え、jsbinで実行するかjsfiddleで実行するかによって、結果が異なります。 jsbinで、次の作品:
'use strict';
var functionArray = ["one", "two", "three"];
var randFunction = functionArray[Math.floor(Math.random() * functionArray.length)];
function one() {
console.log("function one called");
};
function two() {
console.log("function two called");
};
function three() {
console.log("function three called");
};
console.log(randFunction);
window[randFunction]();
私はjsfiddleでそれを実行して、私は「最終的に私はそれとして、私のラムダ(Node.jsの)でこれを実行するにはいくつかの助けを探しています
Uncaught TypeError: window[randFunction] is not a function
at window.onload (VM99:49)
取得します物事を容易にし、また私がドライになるのを助けます。
ありがとうございます!
jsFiddleしたがって、変数はグローバルではありません、関数内のコードをラップします。 –
@FelixKlingそれは理にかなっています。そこに明確化のおかげで! – metropolis