【问题标题】:Unexpected output from in JavaScript operatorJavaScript 运算符中的意外输出
【发布时间】:2020-05-08 22:58:12
【问题描述】:

我有一个如下定义的函数:

function makeUser(name, age) {
  return {
    name,
    age
    // ...другие свойства
  };
}

然后我创建一个用户变量并尝试使用 in 运算符来 console.log()

let user = makeUser('John', 30);

console.log('name' in makeUser); // true - why is true??
console.log('age' in makeUser); // false - why is false??

第一个 log() 评估为 true,而第二个评估为 false。 我希望他们俩都是真的。

这是为什么?

【问题讨论】:

  • 不要“乞求错误”。这么快就做出这样的假设有点粗鲁,尤其是当它您的代码或理解存在缺陷时。更新相关的标题,例如“'.. in function' 的行为是什么?” .

标签: javascript node.js


【解决方案1】:

您只会得到name of the function。

Function 对象的只读 name 属性表示函数在创建时指定的名称,或者可能是 anonymous 或 ''(空字符串)用于匿名创建的函数。

function makeUser(name, age) {
  return {
    name,
    age
    // ...другие свойства
  };
}

let user = makeUser('John', 30);

console.log('name' in makeUser); //   true
console.log('age' in makeUser); //   false
console.log(makeUser.name);    // makeUser
console.log(makeUser.age);    // undefined

【讨论】:

  • 可以通过为 makeUser.age 添加另一个日志来改进;)
猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 2015-09-25
  • 2022-01-05
  • 2012-12-11
相关资源
最近更新 更多