为什么它在Javascript中工作?

为什么它在Javascript中工作?,javascript,Javascript,我需要了解为什么以下各项有效,以确保其始终有效: asyncCall = function(value) { returnValue = callSecondFn(value); (returnValue === value) //is this always true } callSecondFn(value) { delete value['key']; return value; } 这总是给你的吗?你能解释一下原因吗?它正在工作,因为在js中,对象是通

我需要了解为什么以下各项有效,以确保其始终有效:

asyncCall = function(value) {
    returnValue = callSecondFn(value);
    (returnValue === value) //is this always true
}

callSecondFn(value) {
    delete value['key'];
    return value;
}

这总是给你的吗?你能解释一下原因吗?

它正在工作,因为在js中,对象是通过引用传递的。这意味着'value'和'returnValue'都引用同一个对象。

它在工作,因为在js中,对象是通过引用传递的。这意味着'value'和'returnValue'都引用同一个对象。

它在工作,因为在js中,对象是通过引用传递的。这意味着'value'和'returnValue'都引用同一个对象。

它在工作,因为在js中,对象是通过引用传递的。这意味着“value”和“returnValue”都指同一个对象。

需要注意的是,这里的
returnValue
value
是指向同一对象的两个引用。您将对象引用传递给函数,该函数通过从对象中删除属性来修改对象引用。所以物体被改变了。但是
returnValue
value
是相等的,因为它们都指向相同的结果对象

asyncCall=函数(值){
returnValue=callSecondFn(值);
log(value,returnValue,returnValue==value);
//请参见两者都丢失了密钥属性
};
异步调用({k:1,键:3});
函数callSecondFn(值){
删除值['key'];
返回值;

}
需要注意的是这里的
returnValue
value
是指向同一对象的两个引用。您将对象引用传递给函数,该函数通过从对象中删除属性来修改对象引用。所以物体被改变了。但是
returnValue
value
是相等的,因为它们都指向相同的结果对象

asyncCall=函数(值){
returnValue=callSecondFn(值);
log(value,returnValue,returnValue==value);
//请参见两者都丢失了密钥属性
};
异步调用({k:1,键:3});
函数callSecondFn(值){
删除值['key'];
返回值;

}
需要注意的是这里的
returnValue
value
是指向同一对象的两个引用。您将对象引用传递给函数,该函数通过从对象中删除属性来修改对象引用。所以物体被改变了。但是
returnValue
value
是相等的,因为它们都指向相同的结果对象

asyncCall=函数(值){
returnValue=callSecondFn(值);
log(value,returnValue,returnValue==value);
//请参见两者都丢失了密钥属性
};
异步调用({k:1,键:3});
函数callSecondFn(值){
删除值['key'];
返回值;

}
需要注意的是这里的
returnValue
value
是指向同一对象的两个引用。您将对象引用传递给函数,该函数通过从对象中删除属性来修改对象引用。所以物体被改变了。但是
returnValue
value
是相等的,因为它们都指向相同的结果对象

asyncCall=函数(值){
returnValue=callSecondFn(值);
log(value,returnValue,returnValue==value);
//请参见两者都丢失了密钥属性
};
异步调用({k:1,键:3});
函数callSecondFn(值){
删除值['key'];
返回值;
}
谢谢你们两位(mithunsatheesh+kihu),但在你们写了“按值传递”和“按对象传递”之后,我找到了我问题的最佳答案

以下是我对我的问题的最佳答案:

再次感谢你们为我指出了正确的方向

谢谢你们两位(mithunsatheesh+kihu),但在你们写了“按值传递”和“按对象传递”之后,我找到了我问题的最佳答案

以下是我对我的问题的最佳答案:

再次感谢你们为我指出了正确的方向

谢谢你们两位(mithunsatheesh+kihu),但在你们写了“按值传递”和“按对象传递”之后,我找到了我问题的最佳答案

以下是我对我的问题的最佳答案:

再次感谢你们为我指出了正确的方向

谢谢你们两位(mithunsatheesh+kihu),但在你们写了“按值传递”和“按对象传递”之后,我找到了我问题的最佳答案

以下是我对我的问题的最佳答案:


再次感谢您为我指出正确的方向

您传入一个对象,然后返回。然后比较这两个——当然还是同一个物体!与你的问题无关。但是你漏掉了一个分号。行
(returnValue==value)
什么都不做,asyncCall没有返回值,如果它需要的话。。。Javascript不像某些语言那样返回最后一个表达式。但是,在进行异步编码时,不可能返回任何内容,所以我不知道您在这里尝试的是什么。您是否打算返回真/假<代码>异步调用也不包含异步代码。你打算在不包括ajax调用的情况下使用它吗?@Paul:这只是一个演示代码。在我的代码中,这段代码来自success函数。我从内部调用另一个函数,类似于callSecondFn。我想知道,在我的评论中,returnValue是否总是(==value)。我想知道这是否总是有效的。你传入一个对象,然后返回。然后比较这两个——当然还是同一个物体!与你的问题无关。但是你漏掉了一个分号。行
(returnValue==value)
什么都不做,asyncCall没有返回值,如果它需要的话。。。Javascript不像某些语言那样返回最后一个表达式。但是,在进行异步编码时,不可能返回任何内容,所以我不知道您试图返回什么