Javascript 字符串比较无法按预期工作

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(

我正在从事一个连接到firebase的Ionic web项目

我从firestore检索了数据,并使用它来确定用户是管理员还是基金经理,但字符串比较功能不起作用

这是我的打字脚本代码

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
}