有没有办法澄清此JS中的正确和错误陈述?

时间:2019-04-22 16:52:16

标签: javascript boolean truthiness

我一直在学习JS,但似乎无法弄清楚为什么布尔值总是返回true或false。

因此,我相信我了解JS中真实/错误情况的基本知识,但我似乎无法正确地做到这一点。我知道存在数据类型问题,(不能使不同的数据类型做不同的事情)。

function lastCharacter(char1, char2) {
  if (char1[-1] === '' && char2[-1] === '') {
    return true;
  } else {
    return false;
  }
}

console.log(lastCharacter('apple', 'pumpkine'));

function lastCharacter(char1, char2) {
  if (char1[-1] === char2[-1]) {
    return true;
  } else {
    return false;
  }
}

console.log(lastCharacter('apple', 'pumpkina'));

定义一个函数lastCharacter,该函数接受两个字符串作为参数。 如果两个字符串都以相同的字符结尾,则lastCharacter应该返回true。 否则,lastCharacter应该返回false。

它们要么返回true,要么总是false。谁能帮我吗?

4 个答案:

答案 0 :(得分:4)

您需要一种不同的方法来获取字符串的最后一个字符,最好使用String#slice和一个用于获取最后一个字符的负值。然后比较并返回结果。

Random

使用返回select e.*,d.*,concat(c.col1,c.col2,c.col3.... ,',') from Employees e,Departments d,Cars c where e.department_id=d.department_id and d.emp_id=e.emp_id order by e.emp_id; 的索引function lastCharacter(string1, string2) { return string1.slice(-1) === string2.slice(-1); } console.log(lastCharacter('apple', 'pumpkine'));和返回空白字符串的-1获取空字符串的最后一个字符的比较。

undefined

答案 1 :(得分:3)

您可以使用切片

function lastCharacter(char1, char2) {
  return char1.slice(-1) === char2.slice(-1)
}

console.log(lastCharacter('apple', 'pumpkina'));
console.log(lastCharacter('apple', 'snake'));

或者您也可以访问最后一个索引

function lastCharacter(char1, char2) {
  return char1[char1.length-1] === char2[char2.length-1]
}

console.log(lastCharacter('apple', 'pumpkina'));
console.log(lastCharacter('apple', 'snake'));

答案 2 :(得分:0)

JavaScript中没有负数组索引,您不必使用char1[-1]来代替char1[char1.length - 1]

访问一个字符串字符(例如"abc[1])的长度始终为1,它将永远不等于""。您的第二个功能更有意义。

 if(condition) { return true; } else { return false; }

等于

 return condition;

答案 3 :(得分:0)

符号[-1]在JavaScript中并不隐含表示“从字符串末尾开始的一个字符”。您可以使用str[str.length - 1]。 (如果您预期可能会出现空的源字符串,则也要进行检查,以免出现完全相同的问题。)

代替返回if/elsetrue的{​​{1}},只需返回逻辑表达式的结果即可:

false

无论两个 return char1[char1.length - 1] === '' && char2[char2.length - 1] === ''; 比较都返回===还是true,因此总表达式值必须是其中之一。但是,总的来说,如果您要绝对确保自己以布尔值结尾,则可以在表达式的前面加上false以强制执行标准JavaScript“ truthy-falsy”评估:

!!