原始类型(Number,String等)按值传递,但是对象是未知的,因为它们可以是值传递(如果我们认为持有对象的变量实际上是对象的引用)并且通过引用传递(当我们认为对象的变量保存对象本身时).
虽然最后并不重要,但我想知道提交传递约定的参数的正确方法是什么.是否有JavaScript规范的摘录,它定义了与此相关的语义?
好的,考虑一下这段代码:
var d1 = new Date();
var d2 = d1;
d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);
Run Code Online (Sandbox Code Playgroud)
即使我叫setDate()
上d2
,d1
也正在增加.我理解这是因为d1是d2
通过引用分配的.我的问题是......我怎么不这样做,所以.setDate()
只适用于d2
?
我有一个全局变量MyGlobalVar和一些看起来像这样的代码:
var MyGlobalVar = null;
function PlayWithMyGlobal() {
MyGlobalVar = new Object();
.... adding properties to MyGlobalVar
MoreFun(MyGlobal);
}
function MoreFun(TheVar) {
is TheVar here a local or just a reference to the global?
}
Run Code Online (Sandbox Code Playgroud)
如果我传递全局变量,我还在使用全局吗?谢谢.