Javascript 字符串比较无法按预期工作
我正在从事一个连接到firebase的Ionic web项目 我从firestore检索了数据,并使用它来确定用户是管理员还是基金经理,但字符串比较功能不起作用 这是我的打字脚本代码Javascript 字符串比较无法按预期工作,javascript,typescript,Javascript,Typescript,我正在从事一个连接到firebase的Ionic web项目 我从firestore检索了数据,并使用它来确定用户是管理员还是基金经理,但字符串比较功能不起作用 这是我的打字脚本代码 role: string = ""; admin: boolean = false; fm: boolean = false; constructor(private authService: AuthService, private router: Router,) { } ngOnInit(
role: string = "";
admin: boolean = false;
fm: boolean = false;
constructor(private authService: AuthService, private router: Router,) { }
ngOnInit() {
this.fname = "";
this.lname = "";
this.nric = "";
this.role = "";
this.admin = false;
this.fm = false;
this.user = this.authService.getCurrentUser();
this.getProfile();
if (this.role = "Admin") {
console.log("Admin")
this.admin = true;
}
else {
if (this.role = "Fund Manager") {
console.log("Fund Manager")
}
}
this.getProfile()
将填充此.role
。当此.role
为“User”
时,Admin变为true,我不确定是什么原因导致了问题
我的代码有问题吗
使用比较运算符==
而不是赋值运算符=
您可以使用
==
或==
。但是==
操作符(严格比较)不会自动转换类型,所以我认为它更好:
if (this.role === "Admin") {
// do something
}
添加:开关盒语句也使用严格比较,值必须是相同类型才能匹配
switch (this.role) {
case 'Admin':
// do something
break;
case 'Manager':
// do others
break;
}
=不同于==(==)。形式上是给变量赋值,后者是根据您的需要进行比较。因此这里的
this.role='admin'
始终为真。要给变量赋值,请使用=
。
要比较两个值而不考虑其数据类型,请使用=
要比较两个值以及变量数据类型,请使用==
使用=
或==
比较两个变量
if ( this.role == "Admin"){
//your logic here
}
或
if ( this.role === "Admin"){
//your logic here
}
你不进行比较,你是在分配一个值。
除了已经给出的答案之外:你可以用风格来避免这样的错误。如果您编写类似于
的代码,如果(“Admin”=this.role)
将自动导致一个错误,该错误将显示在浏览器的控制台中。我建议您使用linter来捕获这些潜在的错误。使用时,您可以通过找到此问题。感谢您的帮助!我设法解决了这个问题!!
if ( this.role === "Admin"){
//your logic here
}