对象的Javascript变量赋值返回字符串

对象的Javascript变量赋值返回字符串,javascript,jquery,Javascript,Jquery,我正在尝试运行以下代码: var status = null; $.ajax({ type: "GET", url: "/status", success: function(data, textStatus, jqXHR){ status = data; }, error: function(jqXHR, textStatus, errorThrown){ console.error(textStatus + ": " +

我正在尝试运行以下代码:

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

在调试器中,我可以看到
数据
的值为
对象{7100665:0,8800798:0}
。jQuery将从服务器返回的JSON字符串正确解析为对象

但是,一行之后,全局变量
status
的值为
“[object object]”
,其行为类似于字符串对象-字符串未按预期分配对象

看起来分配中有一个隐式
typeof
调用正在进行,这不可能,对吗?还有什么我不知道的吗?ajax调用的
内容类型是
application/json


我错过了什么/做错了什么?

找到了
status
是一个。

status
作为一个全局变量,实际上是一个(非标准)宿主对象,允许您在实现它的浏览器中操纵状态栏的文本。它的值被假定为一个字符串,因此您分配给它的任何值都将被静默地强制转换为一个字符串

真正的问题是,你正在用变量污染全局范围。使用IIFE,这不会成为问题:

(function() {
    var status = null;
})();

你确定吗?如果他说的是
status=null
而不是
var status=null
,那么他将使用
window.status
而不是本地
status
变量。@muistooshort:如果此代码在全局范围内,使用
var
实际上不会改变任何东西。该页面不好。例如,它声称
InnerWidth
是一个关键字,这是胡说八道。