【问题标题】:Javascript function output | Constructor typeofJavascript 函数输出 |构造函数类型
【发布时间】:2018-10-09 09:32:09
【问题描述】:

有人能解释一下为什么这个函数返回值为真吗?

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array Object</h2>

<p id="demo"></p>

<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = isArray(fruits);

function isArray(myArray) {
return myArray.constructor === Array;
}
</script>

</body>
</html>

【问题讨论】:

  • 代码非常简单。我不明白为什么你会期望它不是真的。你有什么不明白的?您希望它返回什么?
  • 我已经用我想问的问题编辑了这个问题。你能解释一下而不是问我吗?
  • 我还是不明白你为什么感到困惑。除了Array,您还期望数组的构造函数是什么?
  • 我不熟悉 javascript 构造函数。我不确定 myArray.constructor === Array;暗示?
  • @Auine — 我开的是 Leon。这是辆车。它是一种交通工具。它是一辆汽车的事实并不能阻止它成为一辆汽车。 Array 是一个函数这一事实并不能阻止它也是一个对象。函数是对象的子集,而不是完全独立的数据类型。

标签: javascript constructor typeof


【解决方案1】:

它返回 true,因为数组是使用 Array 构造函数构造的,即使您使用数组字面量语法。

【讨论】:

  • 你能解释一下你的jsbin例子吗?
  • @rohitwtbs — 他们驳斥了错误答案中的陈述。
  • 对不起,我没明白。我想知道 === 运算符在不同场景中检查的内容。
  • @rohitwtbs — 检查两个值是否相同(在每种情况下)。
【解决方案2】:

myArray.constructor 等于 Array,因为 .constructor 属性引用了相同的值 - Array。为什么?因为它是由构造函数Array构造的。 Array === Array 是真的

【讨论】:

    【解决方案3】:
    myArray.constructor === Array;
    

    两者都有类型'function',所以它总是true

    让我们来看看这段代码。

    let a=2;
    console.log(a === Array);
    

    这将记录 false,因为这里我们将 数字类型函数进行比较类型。

    【讨论】:

    • 同意两者都具有“功能”类型,但它们的值如何相等? as === 需要相等的值和相等的类型。谢谢
    猜你喜欢
    • 2010-12-05
    • 2019-01-17
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    相关资源
    最近更新 更多