Bir şeyi değiştirip değiştiremeyeceğiniz veri türüne bağlıdır. Nesneler, diziler ve işlevler referansla ele alınacaktır ve takma ad mümkündür. Diğer türler esasen atomiktir ve değişken, bir değere başvuru yerine değeri depolar.
arguments.callee bir işlevdir ve bu nedenle ona bir başvurunuz olabilir ve paylaşılan nesneyi değiştirebilirsiniz.
function foo() {
var self = arguments.callee;
self.myStaticVar = self.myStaticVar || 0;
self.myStaticVar++;
return self.myStaticVar;
}
Yukarıdaki kodda Söyleyecek olsaydı o Not self = function() {return 42;};sonra selfsonra başvurmak istiyorum farklı nesnenin daha arguments.calleebir referans kalır foo. Bileşik bir nesneye sahip olduğunuzda, atama operatörü referansın yerini alır, başvurulan nesneyi değiştirmez. Atomik değerlerle, değişkene 'yeni' bir tamsayı atayan benzer bir durum y++eşdeğerdir y = y + 1.