有木有大佬帮忙瞅瞅,怎么让它返回数据呢,现在返回的时undefined
function send(method, url, type, data){
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (){
if(xhr.readyState === 4){
if(xhr.status === 200){
const msg = JSON.parse(xhr.responseText);
// console.log(msg)
return msg
}else {
return 1
}
}
}
xhr.open(method, url, true)
xhr.setRequestHeader("type", type)
if(method === "GET"){
xhr.send()
}else {
xhr.send(JSON.parse(data))
}
}
const msg = JSON.parse(xhr.responseText);
这里就应该返回数据了,具体你抓包看看,是不是服务器没返回,或者状态码不是200
console.log(undefined+1); // NaN
console.log(undefined+NaN); // NaN
console.log(undefined+true); // NaN
console.log(undefined+'aaa'); // undefinedaaa
console.log(undefined+undefined); // NaN
在JavaScript中,我遇到的问题是如何判断两个对象是否相等。这里提供了两种方法。
第一种方法是通过比较两个对象的键和值的方式来判断它们是否相等。首先使用Object.getOwnPropertyNames()
方法分别获取两个对象的所有属性名,并将它们存储在两个数组中。然后比较两个数组的长度,如果不相等,则返回false。如果长度相等,则通过循环遍历数组来比较每个属性的键和值是否相等。如果有任一属性的键或值不相等,则返回false。如果循环结束后没有返回false,则说明两个对象相等,返回true。
function isObjectValueEqual(a, b) {
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
if (aProps.length !== bProps.length) {
return false;
}
for (var i = 0; i < aProps.length; i++) {
var propName = aProps[i];
var propA = a[propName];
var propB = b[propName];
if (propA !== propB) {
return false;
}
}
return true;
}
let obj1 = {
a: 1,
b: 2
}
let obj2 = {
b: 2,
a: 1
}
console.log(isObjectValueEqual(obj1, obj2)); // true
第二种方法是在第一种方法的基础上进一步处理对象的嵌套情况。与第一种方法类似,首先比较两个对象的属性数量是否相等。然后通过循环遍历每个属性,如果属性值为对象,则递归调用该函数进行深层比较。如果存在任意属性的键或值不相等,则返回false。如果循环结束后没有返回false,则说明两个对象相等,返回true。
function isObjectValueEqualNew(a, b) {
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
if (aProps.length != bProps.length) {
return false;
}
for (var i = 0; i < aProps.length; i++) {
var propName = aProps[i]
var propA = a[propName]
var propB = b[propName]
if ((typeof (propA) === 'object')) {
if (this.isObjectValueEqualNew(propA, propB)) {
return true
} else {
return false
}
} else if (propA !== propB) {
return false
} else {
//
}
}
return true
}
let obj1 = {
a: 1,
b: 2,
c: {
d: 4,
e: {
f: 5,
e: 6
}
}
}
let obj2 = {
b: 2,
a: 1,
c: {
e: {
e: 6,
f: 5
},
d: 4
}
}
console.log(isObjectValueEqualNew(obj1, obj2)); // true
以上是通过比较对象的键和值来判断对象是否相等的方法。希望能够帮到你!如果还有其他问题,请随时提问。