对象的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
是一个关键字,这是胡说八道。