我在向变量分配id
字段时遇到了问题。
鉴于此:
var temp;
if(!data.obj.id){
console.log('*************** assigning ' + data.obj.id + ' to temp');
temp = data.obj.id;
console.log('temp is',temp);
}else if(!data.obj._id){
console.log('*************** assigning ' + data.obj._id + ' to temp');
temp = data.obj._id;
console.log('temp is: ',temp);
}
console.log('**************',data.obj._id);
console.log('**************',temp);
这些if语句都不是真的,并且控制台日志返回
************ 538cdd6fca343660389d4d69
************ undefined
我也试过了:
if(data.obj.hasOwnProperty('id')){
console.log('*************** assigning ' + data.obj.id + ' to temp');
temp = data.obj.id;
console.log('temp is',temp);
}else if(data.obj.hasOwnProperty('_id')){
console.log('*************** assigning ' + data.obj._id + ' to temp');
temp = data.obj._id;
console.log('temp is: ',temp);
}
console.log('**************',data.obj._id);
console.log('**************',temp);
temp
仍未定义。
我已将代码更改为:
var temp;
if(data.obj.hasOwnProperty('id')){
console.log('*************** assigning ' + data.obj.id + ' to temp');
temp = data.obj.id;
console.log('temp is' + temp);
}
if(data.obj.hasOwnProperty('_id')){
console.log('*************** assigning ' + data.obj._id + ' to temp');
temp = data.obj._id;
console.log('temp is' + temp);
}
console.log('**************',data.obj._id);
console.log('**************',data.obj.id);
console.log('**************',temp);
我得到了:
************** 538ce08c6ced88c020ecbd07
************** 538ce08c6ced88c020ecbd07
************** undefined
答案 0 :(得分:1)
你没有记录data.obj.id
的值,但可能也是如此,就像_id
一样(在他们的否定返回错误的意义上)。因此,在您的示例中,第一个和第二个if子句都不会被执行,并且两个分支都不会执行。您似乎想从if子句中删除否定运算符!
,但在没有上下文的情况下很难判断。