如何从另一个javascript文件调用javascript函数和变量
我正在构建一个应用程序来检查用户是否按照提供的说明拍照并匹配面部识别。 我为用户提供了8条指导,比如检查他们拍照时是否微笑,因为我们的面部识别是通过在线API“Skybiometry”实现的。所以我们必须从它的JSON值中获得相应的值,如下所示,在另一个html文件中,如果结果不成功,我需要调用VerifyFace()函数并在另一个javascript文件中获取消息和结果变量。我将函数调用为如何从另一个javascript文件调用javascript函数和变量,javascript,json,Javascript,Json,我正在构建一个应用程序来检查用户是否按照提供的说明拍照并匹配面部识别。 我为用户提供了8条指导,比如检查他们拍照时是否微笑,因为我们的面部识别是通过在线API“Skybiometry”实现的。所以我们必须从它的JSON值中获得相应的值,如下所示,在另一个html文件中,如果结果不成功,我需要调用VerifyFace()函数并在另一个javascript文件中获取消息和结果变量。我将函数调用为VerifyFace()后接结果和消息。但是,代码不起作用 function ValuesToCheck(
VerifyFace()代码>后接结果代码>和消息代码>。但是,代码不起作用
function ValuesToCheck(){
Msgs = Msgs();
RandomMsg = RandomMsg();
if (RandomMsg == Msgs[0] || RandomMsg == Msgs[1]){
var check = photos[0].tags[0].attributes[0].glasses[0];
} else if (RandomMsg == Msgs[2] || RandomMsg == Msgs[3]) {
var check = photos[0].tags[0].attributes[0].smiling[0];
} else if (RandomMsg == Msgs[4] || RandomMsg == Msgs[5]) {
var check = photos[0].tags[0].attributes[0].lips[0];
} else if (RandomMsg == Msgs[6] || RandomMsg == Msgs[7]) {
var check = photos[0].tags[0].attributes[0].eyes[0];
}
check = "facesDet." + check;
return check;
}
var result = "Unsuccessful";
var message = "You didn't follow the instruction, please try again.";
function VerifyFace(){
Msgs = Msgs();
RandomMsg = RandomMsg();
check = ValuesToCheck();
var value = check + ".value";
var confidence = check + ".confidence";
if (RandomMsg == Msgs[0] && value == true && confidence >= 50){
console("Users followed the instruction!");
} else {
result;
message;
}
if (RandomMsg == Msgs[1] && value == false && confidence < 50){
console("Users followed the instruction!");
} else {
result;
message;
}
if (RandomMsg == Msgs[2] && value == true && confidence >= 50){
console("Users followed the instruction!");
} else {
result;
message;
}
}
我不认为这些话:
Msgs = Msgs();
RandomMsg = RandomMsg();
result;
message;
你想做什么就做什么,因为你说过它们是变量而不是函数
如果Msgs
和RandomMsg
确实是全局变量,那么您可以省略这些行,只需在函数中使用Msgs
和RandomMsg
另一种可能性,例如,如果您希望确保您的函数不会更改全局变量,则如下所示:
var Msgs = window.Msgs || '';
var RandomMsg = window.RandomMsg || '';
它将globasl复制为局部变量(如果不存在,则为空字符串)
还有以下几行:
Msgs = Msgs();
RandomMsg = RandomMsg();
result;
message;
没有明显的效果。是否要将它们放在页面上的某个位置或类似的位置:
alert('result: ' + result + ", message = " + message);
至少?表达式结果代码>和消息代码>实际上什么都不做。什么使你认为它不起作用。请缩进你的代码。我们看不懂(我怀疑你也看不懂)。试着“调试”你的程序。所以他并不擅长调试程序。您的调试器在这方面做得更好。请参阅。console(“…”)
可能会产生错误。很抱歉没有正确设置格式,我缩进了代码以发布它,忽略了整洁的格式。只是编辑得很整洁,如果还有其他东西需要编辑,请再次指出。只是声明一下,以防您不知道,我的Msgs()
函数将返回Msgs的值,所以我使用Msgs()
来获取变量Msgs
,变量和函数共享相同的名称。我的知识正确吗?重用名称通常是个坏主意<代码>var theMsgs=Msgs()代码>(或类似代码)不那么麻烦。谢谢您的建议。在另一个javascript文件中调用此函数时,是否可以使用函数中使用的变量,如本例中的message
和result
。