Javascript 函数没有返回正确的值
我有这两个函数,然后另一个函数调用它们。在函数调用之间,我似乎正在失去作用域Javascript 函数没有返回正确的值,javascript,scope,Javascript,Scope,我有这两个函数,然后另一个函数调用它们。在函数调用之间,我似乎正在失去作用域 var determineInteractionType = function( interaction ){ var param = interaction.parameterSet.param; param.forEach(function( parameter, index, array ){ if( parameter.name === "INTERACTION-TYPE"
var determineInteractionType = function( interaction ){
var param = interaction.parameterSet.param;
param.forEach(function( parameter, index, array ){
if( parameter.name === "INTERACTION-TYPE" ){
return parameter.value;
}
});
return null;
};
var getInteraction = function( id ){
customInteractions.forEach( function(interaction, index, array){
if( interaction.id == id ){
alert( id );
return interaction;
}
});
return null;
};
下面是调用函数的一段代码。错误在于,即使getInteraction返回一个值,它也显示determineInteraction传递了一个null参数
var _convertStemFromEAS = function(stem) {
var reg = new RegExp('@\{PRESENTATION-HTML-INTERACTION\}="(.*?)"');
var result;
var count = 1;
while ((result = reg.exec(stem)) !== null) {
var Match = result[0];
var dropdownGuid = result[1];
//The Error seems to be right here
var interactionType = determineInteractionType( getInteraction( id ) );
if( interactionType === "shortTextInteraction" ){
var escaped = $('<div/>').text('<select id="' + NewTmpGuid() + '" data-choice-id="' + dropdownGuid + '" style="width:100px;" data-count="' + count + '" class="easSelection"><option>DD' + count + '</option></select>').html();
}else if( interactionType === "essayTextInteraction" ){
}
count += 1;
stem = stem.replace(Match, escaped);
}
return stem;
};
var\u convertStemFromEAS=函数(阀杆){
var reg=new RegExp('@\{PRESENTATION-HTML-INTERACTION\}=“(.*?”);
var结果;
var计数=1;
while((result=reg.exec(stem))!==null){
var匹配=结果[0];
var dropdownGuid=结果[1];
//错误似乎就在这里
var interactionType=determiniteinteractiontype(getInteraction(id));
如果(interactionType==“shortTextInteraction”){
变量转义=$('').text('DD'+count+'').html();
}else if(interactionType==“essayTextInteraction”){
}
计数+=1;
阀杆=阀杆。更换(匹配,转义);
}
回流杆;
};
determinateInteraction
返回null,因为这是它编码要返回的内容
当您从forEach循环中的内部函数返回时,您不是从确定交互
返回
您要做的是这样的:
var determineInteractionType = function( interaction ){
var
returnValue = null,
param = interaction.parameterSet.param;
param.forEach(function( parameter, index, array ){
if( parameter.name === "INTERACTION-TYPE" ){
returnValue = parameter.value;
}
});
return returnValue;
};
我刚刚弄明白我需要做什么,但不知道为什么。我会给你加5的理由。我觉得javascript中常见的错误模式。我不认为returnfalse
会破坏forEach
。