【问题标题】:Codecademy - Looking for clarification on syntax ( === "number" )Codecademy - 寻找语法说明( === "number" )
【发布时间】:2018-03-18 14:52:38
【问题描述】:

我正在学习 Codecademy 的“JavaScript 简介”课程。我刚刚遇到了一个示例代码部分,这让我有点困惑,似乎没有得到解释。我查看了 Mozilla 文档并认为我理解,但我真的只是在寻找有关该主题的说明。

let restaurant = {
  _name: 'Italian Bistro',
  _seatingCapacity: 120,
  _hasDineInSpecial: true,
  _entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine 
pesto'],

  set seatingCapacity(newCapacity) {
      if (typeof newCapacity === 'number') {        // THIS LINE
        this._seatingCapacity = newCapacity;
      console.log(`${newCapacity} is valid input.`);
    } else {
        console.log(`Change ${newCapacity} to a number.`)
    }
  }

我的问题 - 这里的“数字”是指数字(12、343 等)而不是字符串“数字”吗?还是只在 typeof 操作符内?

我假设这是一个愚蠢的问题,但它却让我失望了。谢谢。

【问题讨论】:

  • 由于您使用typeof newCapacity,是的,只有当newCapacity 是数值(12、343 等)时,条件才会通过。 typeof 产生像 stringnumberobject 等值。这些值中的每一个都作为字符串本身返回。
  • "number" 表示newCapacity的类型,是一个数字。在这里检查所有类型w3schools.com/js/js_datatypes.asp
  • typeof 返回一个字符串。所以它是对象的类型,在这种情况下,您检查它是否是一个数字。 number 这里是一个字符串,因为那是类型.. :)

标签: javascript


【解决方案1】:

=== 用于检查严格相等。考虑下面的例子

0 == false //<== returns true
0 === false //<== returns false

在您的示例中没有必要,因为typeof 永远不会返回任何可能等于number 的值,而不是number 字符串本身。但使用=== 被认为是一种很好的做法(尽管我个人认为这取决于您所比较的内容)

(此处为typeof 的可能返回值列表)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

【讨论】:

  • 是的,我正在编辑我的答案。但这取决于您要比较的内容
猜你喜欢
  • 2018-01-02
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
相关资源
最近更新 更多