这种方法对于发送请求 JS 是否正确?
Is this approach correct for sending a request JS?
根据布尔值条件,它应该将该消息发送到后端。目前我是这样做的:
async submit() {
...
await api.submitProduct (
productId,
product.instock.unlimited == false ? 'book' : 'ebook'
)
所以它应该检查产品的 instock proper 包含无限价值,这是错误的,而不是应该提交 'book' else 电子书。这是正确的方法吗?问题与以下行有关:
product.instock.unlimited == false ? 'ebook' : 'book'
正如我最初指出的那样,您使用的 ==
不会专门检查类型,因此值为 undefined
的项目是一个“虚假”值,最终将被分配到 book
类别。这是因为如果操作数的类型不同,双重等于运算符会强制操作数。
使用 ===
将防止这种情况发生,因为只有布尔值明确为 false
的项目才能满足测试标准。通常最佳做法是使用 ===
来避免此类情况。
product.instock.unlimited === false ? 'book' : 'ebook'
答案取决于您需要申请的条件。
抽象相等运算符不强制执行类型检查,因此不是最佳做法。事实上,几乎在任何情况下,您都可以不用 ==
。
查看 MDN 上两个相等运算符之间的区别。
在下面的示例中,如果您希望在您的值实际上是布尔类型和 false 时发送 false,那么您可以使用严格相等运算符
value === false ? 'first' : 'second';
但是,如果您正在寻找 'second' 任何虚假值,那么检查可以很容易地更改为
value ? 'false' : 'second';
注意以下在js中都是falsy值
"" (Empty string)
0 (Number 0)
undefined
null
false
你对 ===
的使用感到困惑,这个同时检查类型和值所以你不需要使用大函数来检查 var 是否是 false
或 undefined
但正确的运算符 ===
.
const test = (value) => value === false ? 'book' : 'ebook'
// test with false, return book
console.log(test(false))
// test with undefined, return ebook
console.log(test(undefined))
根据布尔值条件,它应该将该消息发送到后端。目前我是这样做的:
async submit() {
...
await api.submitProduct (
productId,
product.instock.unlimited == false ? 'book' : 'ebook'
)
所以它应该检查产品的 instock proper 包含无限价值,这是错误的,而不是应该提交 'book' else 电子书。这是正确的方法吗?问题与以下行有关:
product.instock.unlimited == false ? 'ebook' : 'book'
正如我最初指出的那样,您使用的 ==
不会专门检查类型,因此值为 undefined
的项目是一个“虚假”值,最终将被分配到 book
类别。这是因为如果操作数的类型不同,双重等于运算符会强制操作数。
使用 ===
将防止这种情况发生,因为只有布尔值明确为 false
的项目才能满足测试标准。通常最佳做法是使用 ===
来避免此类情况。
product.instock.unlimited === false ? 'book' : 'ebook'
答案取决于您需要申请的条件。
抽象相等运算符不强制执行类型检查,因此不是最佳做法。事实上,几乎在任何情况下,您都可以不用 ==
。
查看 MDN 上两个相等运算符之间的区别。
在下面的示例中,如果您希望在您的值实际上是布尔类型和 false 时发送 false,那么您可以使用严格相等运算符
value === false ? 'first' : 'second';
但是,如果您正在寻找 'second' 任何虚假值,那么检查可以很容易地更改为
value ? 'false' : 'second';
注意以下在js中都是falsy值
"" (Empty string)
0 (Number 0)
undefined
null
false
你对 ===
的使用感到困惑,这个同时检查类型和值所以你不需要使用大函数来检查 var 是否是 false
或 undefined
但正确的运算符 ===
.
const test = (value) => value === false ? 'book' : 'ebook'
// test with false, return book
console.log(test(false))
// test with undefined, return ebook
console.log(test(undefined))