对象的Javascript变量赋值返回字符串
我试图运行以下代码:
var status = null; $.ajax({ type: "GET", url: "/status", success: function(data, textStatus, jqXHR){ status = data; }, error: function(jqXHR, textStatus, errorThrown){ console.error(textStatus + ": " + errorThrown); } });
有趣的部分是以下行: status = data;
在调试器中,我可以看到data
的值为Object {7100665: 0, 8800798: 0}
。 jQuery正确地将从服务器返回的JSON字符串解析为对象。
但是,一行之后全局变量status
具有值"[object Object]"
并且行为类似于字符串对象 – 字符串没有按预期分配给它的对象 。
看起来在任务中有一个隐含的类型调用,这不可能,对吧? 是否还有一些我不知道的事情? ajax调用的Content-Type
是application/json
。
我错过了什么/做错了什么?
作为全局变量的status
实际上是window.status
,它是一个(非标准)主机对象,允许您在实现它的浏览器中操作状态栏的文本。 它的值假定为一个字符串,因此您分配给它的任何值都将被静默强制转换为字符串。
真正的问题是你用变量污染了全局范围。 使用IIFE,这不是问题:
(function() { var status = null; })();
发现它… status
是一个保留的关键字 。