有没有办法弄清楚这个JS中的真假语句?
Is there a way to clarify the true and false statements in this JS?
我一直在努力学习 JS,但我似乎无法弄清楚为什么我的布尔值总是返回 true 或 false。
所以我相信我了解 JS 中 truthy/falsy 情况的基础知识,但我似乎无法正确理解。我知道存在数据类型问题,(不能让不同的数据类型做不同的事情)。
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
应该 return 为真。
否则,lastCharacter
应该 return false。
它们要么return总是正确的,要么总是错误的。谁能帮帮我?
您需要一种不同的方法来获取字符串的最后一个字符,最好使用 String#slice
和负值来获取最后一个字符。然后比较 return 结果。
function lastCharacter(string1, string2) {
return string1.slice(-1) === string2.slice(-1);
}
console.log(lastCharacter('apple', 'pumpkine'));
使用索引-1
取空字符串的最后一个字符return与undefined
和slice
的比较,return是一个空字符串。
var x = '';
console.log('#' + x.slice(-1) + '#');
console.log('#' + x[x.length -1] + '#');
你可以使用切片
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'));
JavaScript 中没有负数组索引,您必须使用 char1[char1.length - 1]
.
而不是 char1[-1]
访问字符串中的一个字符(例如 "abc[1]
)的长度始终为 1,永远不会等于 ""
。你的第二个功能更有意义。
还有
if(condition) { return true; } else { return false; }
等于
return condition;
符号 [-1]
并不意味着 JavaScript 中的 "one character from the end of the string"。您可以使用 str[str.length - 1]
。 (如果您希望源字符串可能为空,您也需要检查一下以避免出现完全相同的问题。)
而不是 return 是 true
或 false
的 if/else
,只是 return 逻辑表达式的结果:
return char1[char1.length - 1] === '' && char2[char2.length - 1] === '';
无论如何,===
比较 return true
或 false
,因此整体表达式值必须是其中之一。一般来说,但是如果你想绝对确保你最终得到一个布尔值,你可以在表达式前加上 !!
来强制标准 JavaScript "truthy-falsy" 评估:
return !!(expression);
我一直在努力学习 JS,但我似乎无法弄清楚为什么我的布尔值总是返回 true 或 false。
所以我相信我了解 JS 中 truthy/falsy 情况的基础知识,但我似乎无法正确理解。我知道存在数据类型问题,(不能让不同的数据类型做不同的事情)。
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
应该 return 为真。
否则,lastCharacter
应该 return false。
它们要么return总是正确的,要么总是错误的。谁能帮帮我?
您需要一种不同的方法来获取字符串的最后一个字符,最好使用 String#slice
和负值来获取最后一个字符。然后比较 return 结果。
function lastCharacter(string1, string2) {
return string1.slice(-1) === string2.slice(-1);
}
console.log(lastCharacter('apple', 'pumpkine'));
使用索引-1
取空字符串的最后一个字符return与undefined
和slice
的比较,return是一个空字符串。
var x = '';
console.log('#' + x.slice(-1) + '#');
console.log('#' + x[x.length -1] + '#');
你可以使用切片
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'));
JavaScript 中没有负数组索引,您必须使用 char1[char1.length - 1]
.
char1[-1]
访问字符串中的一个字符(例如 "abc[1]
)的长度始终为 1,永远不会等于 ""
。你的第二个功能更有意义。
还有
if(condition) { return true; } else { return false; }
等于
return condition;
符号 [-1]
并不意味着 JavaScript 中的 "one character from the end of the string"。您可以使用 str[str.length - 1]
。 (如果您希望源字符串可能为空,您也需要检查一下以避免出现完全相同的问题。)
而不是 return 是 true
或 false
的 if/else
,只是 return 逻辑表达式的结果:
return char1[char1.length - 1] === '' && char2[char2.length - 1] === '';
无论如何,===
比较 return true
或 false
,因此整体表达式值必须是其中之一。一般来说,但是如果你想绝对确保你最终得到一个布尔值,你可以在表达式前加上 !!
来强制标准 JavaScript "truthy-falsy" 评估:
return !!(expression);