gpt4 book ai didi

javascript - 为什么 Node 认为这不是一个函数,但有时 javascript 还可以?

转载 作者:行者123 更新时间:2023-11-30 11:44:33 25 4
gpt4 key购买 nike

我正在处理一个更大的项目,它通过我配置的 API 网关在 AWS 中调用 Lambda。在 Lambda 中,我尝试使用以下命令基于 API 请求的查询字符串参数动态调用变量:

var functionToCall = event.queryStringParameters.tech;
console.log("functionToCall is " + functionToCall);
global[functionToCall](event, output);

不幸的是我得到了一个错误

TypeError: global[functionToCall] is not a function

我已经使用 window 重写了它以在线演示它,并且根据我是在 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 中运行它时,我得到了

Uncaught TypeError: window[randFunction] is not a function
at window.onload (VM99:49)

最终,我正在寻找一些帮助在我的 Lambda(node.js) 中运行它,因为它会让事情变得更容易,也帮助我保持干爽。

谢谢!

最佳答案

在 Node.js 中,每个模块都有自己的作用域,你永远不会得到隐式全局变量。

与其依赖字符串和全局变量,不如直接创建一个函数数组:

var functions = [
function() {...},
function() {...},
function() {...}
];

关于javascript - 为什么 Node 认为这不是一个函数,但有时 javascript 还可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com