今天我正在做一个关于hack reactor的教程,这是编码测试之一。
创建一个 isPresent 变量, 将它分配给 key 和 undefined 处的对象值之间的比较, 返回 isPresent 变量
这是我的代码。
function isPropertyPresent(object, key) {
var isPresent = (object['key'] === undefined);
return isPresent
}
我在开发者控制台中逐行运行它,一切正常,但是每当我在函数中使用它时,它总是返回“true”,是否有任何我没有注意到的属性,我真的很困惑?
答案 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