Javascript 为什么它不承认我的论点是一个对象?我的方法类型不正确吗?

Javascript 为什么它不承认我的论点是一个对象?我的方法类型不正确吗?,javascript,Javascript,我们将完成一个函数,它接受一个参数,可能是一个对象,并返回输入是否在对象中。函数应创建多个变量(isObject、isNotAnArray和isObjectAndNotAnArray)。将isObject分配给输入的typeof运算符的应用程序。将isNotAnArray分配给对Array.isArray()方法的调用,方法为!操作员也应用了。将isObjectAndNotAnArray分配给前面两个变量,并结合&&运算符,然后返回isObjectAndNotAnArray变量。下面是代码运行的

我们将完成一个函数,它接受一个参数,可能是一个对象,并返回输入是否在对象中。函数应创建多个变量(isObject、isNotAnArray和isObjectAndNotAnArray)。将isObject分配给输入的typeof运算符的应用程序。将isNotAnArray分配给对Array.isArray()方法的调用,方法为!操作员也应用了。将isObjectAndNotAnArray分配给前面两个变量,并结合&&运算符,然后返回isObjectAndNotAnArray变量。下面是代码运行的示例,假设您已经完成了所描述的函数:isAnObject

var resultBoolean1=isAnObject([1,2,3]);
log('should log false:',resultBoolean1);
var resultBoolean2=isAnObject({name:'Tom',friend:'Jerry'});
log('should log true:',resultBoolean2);
我的代码:

函数isAnObject(输入){
var isObject=typeof input==‘object’;
var isNotAnArray=Array.isArray(!input);
var isObject和Notanarray=isObject和isNotAnArray;
返回isObjectAndNotAnArray;//创建isObject变量
//将其指定给输入是否为对象类型
//创建一个isNotAnArray变量
//将其指定给输入是否为数组
//创建isObjectAndNotAnArray变量
//将其指定给isObject和isNotAnArray的组合
//返回isObjectAndNotAnArray变量
}
它告诉我:当输入参数是一个对象时,它返回true

错误:
期望假与真完全相等


你的感叹号放错地方了

  var isNotAnArray = Array.isArray(!input);

因为你想否定布尔值,而不是对象本身

对于更干净的代码,我会将其清理并缩短:

function isObject(input) {
  return Object.prototype.toString.call(input) === '[object Object]';
}

这是一种不同的方法,但基本上它接受您的值并将其转换为字符串,因此排除数组,然后检查字符串是否为[object]。我之所以喜欢这种方法,是因为像“null”或“undefined”这样的值行为怪异,并且根据您定义它的方式被视为对象,所以这种方法将您的使用范围扩展到所有变量类型。

您期望的是什么
!输入
要输入的内容?此外,无论谁教你这一点,都是在误导你。JavaScript中的数组实际上是对象——它们只是内部略有不同的特殊数组。但这方面的不准确也就不足为奇了。我想你应该知道。你在最后添加的文字是什么意思?谢谢!这个社区对新的程序员太苛刻了。感谢。如果答案正确,请将其标记为“是”,以便关闭。我添加了一个更干净的方法,可以处理所有JS变量类型
function isObject(input) {
  return Object.prototype.toString.call(input) === '[object Object]';
}