我宣布全球:
var myClient;
我有一个功能:
//Contact is a record object that has toString() which prints the name.
function getClient() {
myClient = new Object();
debug(input.contact); // This prints properly
myClient.contact = input.contact;
debug(myClient.contact); // This prints properly
}
我有另一个尝试使用相同功能的功能:
function dispatchClient() {
debug(myClient.contact);
}
我看到的结果是未定义的。这里有问题吗? (忽略设计方面)
如果这是错误的,那么如何在函数之间传递全局状态?如果这没有错,那么嗯,我可能需要深入挖掘!
答案 0 :(得分:3)
dispatchClient
被调用之前,可能会调用{p> getClient
。此时,myClient
仍未定义。
答案 1 :(得分:0)
myclient
和myClient
是两个不同的变量。
但代码必须仍然有效。除非你在getClient函数之前调用dispatchClient。
答案 2 :(得分:0)
如果您在 dispatchClient()之前调用 getClient(),* myClient *变量将是未定义的。
其他可能性是名称(区分大小写),在dispatchClient()中,您使用的* C * lient与全局变量my * c *不同lient。
如果可能(取决于您的代码),请在开头创建一个实例:
var myclient = new Object();
答案 3 :(得分:0)
当您稍后将对象用作myclient
时,您的var为myClient
。 Javascript区分大小写,因此这些变量不同。