Javascript 在js中使用或条件的更好方法
当我写这篇文章时,我的Javascript 在js中使用或条件的更好方法,javascript,Javascript,当我写这篇文章时,我的或条件起作用 const role = "admin" if (role === "user" || role === "admin") { } 但是为什么我的或条件不能以这种方式工作 if (role === "user" || "admin") { } 如果我写这篇文章,它会起作用 if (role === "admin" || "u
或条件起作用
const role = "admin"
if (role === "user" || role === "admin") {
}
但是为什么我的或
条件不能以这种方式工作
if (role === "user" || "admin") {
}
如果我写这篇文章,它会起作用
if (role === "admin" || "user") {
}
我想使我的if
条件true
两次都生效,但在第二次它不起作用。相等运算符与or运算符具有更高的绑定,因此首先测试角色===“user”
。如果这是错误的,因为它不是“用户”,这将是错误的。但这并不重要,因为另一方面,“admin”
是真的,而truty或false是真的。
以下是OP中的3个案例:
一,
role==“user”
为false,
role==“admin”
为true
=>(角色===“用户”| |角色===“管理员”)
为真。
二,
role==“user”
为false,
“admin”
是真的
=>(角色===“用户”| |“管理员”)
为真
三,
错误,因为未定义角色。如果您用任何值实例化它,您将得到案例2
解释
为了更好地理解JS中truethy的示例列表(将执行这些示例):
- 如果(真)
- if({})
- 如果([])
- 如果(42)
- 如果(“foo”)
- 如果(新日期())
- 如果(-42)
- 如果(3.14)
- 若有(-3.14)
- if(无穷大)
- if(-无穷大)
下面是JS中falsy的示例列表(它们不会被执行):
- if(false)
- if(空)
- 如果(未定义)
- 如果(0)
- 如果(0n)
- 如果(南)
- 如果(“”)
- 如果(“”)
- if(``)
- 如果(全部文件)
因为这不是方法或工作原理。它评估左侧的条件是否真实,如果真实,则返回该条件,否则返回右侧。任何非空字符串都是truthy,因此您编写的是
如果(角色===/*某个truthy值*/|*/*没关系,第一个值是truthy*/)
您需要使用第一个代码段。这就是工作方式,或者说应该是工作方式
或者,如果([“user”,“admin”].includes(role))
|
是一个运算符,并且两个示例在语法上都是正确的,但它们的含义明显不同,则可以执行。但是,不清楚您的问题是什么。您可以始终使用RegExp.test()。我想让我的if条件在两次都是真实的,但在第二次它不起作用。第二次不起作用,因为它并不意味着你认为它能起什么作用。它“起作用”,但它的作用与第一个代码示例不同。“如果任何一方都不真实,它将返回false”-不,这是不正确的。如果两个值都不是真的,则右边的值是结果,而不是false
.Oops。我最近学习过其他编程语言。谢谢你的更正。你能检查一下上面的问题并根据这三个案例给出你的答案吗
const role = "admin";
if (role === "user" || role === "admin") { ... }
const role = "xxx";
if (role === "user" || "admin") { ... }
if (role === "user" || "admin") { ... }