Javascript函数中的布尔返回

时间:2021-05-02 06:46:08

标签: javascript

今天我正在做一个关于hack reactor的教程,这是编码测试之一。

创建一个 isPresent 变量, 将它分配给 key 和 undefined 处的对象值之间的比较, 返回 isPresent 变量

这是我的代码。

function isPropertyPresent(object, key) {

  var isPresent = (object['key'] === undefined);
  return isPresent
}

我在开发者控制台中逐行运行它,一切正常,但是每当我在函数中使用它时,它总是返回“true”,是否有任何我没有注意到的属性,我真的很困惑?

2 个答案:

答案 0 :(得分:2)

key 是一个变量,所以不要在它周围加上引号,并根据您的函数名称使用 !== 运算符;删除函数内部不需要的 isPresent 变量,使代码更简洁。

function isPropertyPresent(object, key) {
  return object[key] !== undefined;
}

答案 1 :(得分:0)

object['key'] 正在寻找字面上名为“key”的属性。您需要查找在 key 参数中传递的属性,即 object[key]

var objectWithKeyProperty = {
  key: 'secretKey',
  otherProp: 'hello world'
}

var objectWithoutKeyProperty = {
  otherProp: 'hello world'
}

function isPropertyPresentOriginal(object, key) {
  var isPresent = (object['key'] === undefined);
  return isPresent
}

function isPropertyPresentModified(object, key) {
  var isPresent = (object[key] === undefined);
  return isPresent
}

console.log(isPropertyPresentOriginal(objectWithKeyProperty, 'does not matter, this arg is not being used')) // true
console.log(isPropertyPresentOriginal(objectWithoutKeyProperty, 'does not matter, this arg is not being used')) // false

console.log(isPropertyPresentModified(objectWithKeyProperty, 'key')) // true
console.log(isPropertyPresentModified(objectWithoutKeyProperty, 'key')) // false