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