参照を渡していますtestFunctionが、それはその場で作成したオブジェクト リテラルへの参照です: testFunction({cacheVar:myVar});<--{}は参照されるオブジェクトです。変数に割り当てられることはないため、testFunction返されるとすぐに GC されます。プロパティには の値のコピーが割り当てられ
ます(この場合は未定義)。参照によって渡されるオブジェクトのみが配列、オブジェクト リテラル、カスタム オブジェクト、関数を返すことを覚えておく必要がありますが、すべてプリミティブである、、およびを返すことができます。ところで、このルールを証明する例外です (歴史的な理由で返されます)。cacheVarmyVartypeof somethingobjectundefinedstringbooleannumbernullobject
の値を変更したい場合はmyVar、次のようにしますmyVar。
function testFunction()
{
    myVar = new Date();
}
//alternative:
function testFunction()
{
    return new Date();
}
var myVar = testFunction();
ただし、最初の方法はあまり安全ではありません (暗黙のグローバル)。変更したい変数に目的の値を直接返すか (2 番目のバージョン)、クロージャーを使用するか、すべてをオブジェクトに変換します。私たちは今、遠すぎます