所以这是我的代码:
function makeContent(jsonData){
var aProperty, containerType, contentContainerName, containerIdentifier, containerComment, theContent ;
for(aProperty in jsonData){
switch(aProperty){
case "containerType": containerType = jsonData[aProperty];
case "contentContainerName" : contentContainerName = jsonData[aProperty];
case "containerComment" : containerComment = jsonData[aProperty];
case "containerIdentifier" : containerIdentifier = jsonData[aProperty];
case "itemContent" : theContent = jsonData[aProperty];
}
}
if(theContent.hasOwnProperty){
console.log(theContent);
makeContent(theContent);
}
我将此作为输出:
[Object] footer.js:59
TypeError:'undefined'不是对象(评估'theContent.hasOwnProperty')footer.js:58
这对我来说没有意义,因为当我在console.log(theContent)中我得到一个对象并且它工作正常。只有在我尝试递归调用函数时添加makeContent函数时才会出现错误。所以我没有添加return语句因为这个错误,我应该这样做吗?
答案 0 :(得分:1)
您似乎正在使用条件表达式if(theContent.hasOwnProperty)
来确定是否定义了theContent
。变量在函数顶部声明,并且仅在最终case
中定义。
检查变量是否定义的最可靠方法是:
if (typeof theContent !== 'undefined`) { ... }
如果未执行最终case
语句,则未定义theContent
,并且尝试访问未定义值的hasOwnProperty
将导致观察到的错误。