Javascript变量比较

Javascript变量比较,javascript,Javascript,我已经声明了全局变量的javascript: var IsUserAllowed = false; 我有一个功能: function setSelectedIdsInput(inputLogicalId) { if (IsUserAllowed) { 这不起作用,我假设IsUserAllowed的值是字符串。 所以我做了: var isUserAllowedStr = IsUserAllowed.toString().toLowerCase(); if (isUserAllowedSt

我已经声明了全局变量的javascript:

var IsUserAllowed = false;
我有一个功能:

function setSelectedIdsInput(inputLogicalId) {
   if (IsUserAllowed) {
这不起作用,我假设IsUserAllowed的值是字符串。
所以我做了:

var isUserAllowedStr = IsUserAllowed.toString().toLowerCase();
if (isUserAllowedStr == "true") {
这是可行的,因为我不熟悉java脚本,我想知道比较这样的字符串是否合适。
这是因为:

if (isUserAllowedStr.localeCompare("true")) {
也不管用

谢谢

更新-我怀疑全局变量是字符串而不是布尔值。这就是if失败的原因。当我发出警报(IsUserAllowed)时,输出为“False”

请尝试:

if (isUserAllowed === true) {
}
然后


但是它是无用的。

isUserAllowed是一个布尔值(
true
/
false
):

你可以通过简单的操作来检查它

if (isUserAllowed) { }


你的例子应该像预期的那样有效。 您可以在这个JSFIDLE中进行测试:


你说的“这不起作用”是什么意思?如果
IsUserAllowed
设置为false,那么执行
If(IsUserAllowed)
显然不会计算为true。第一个应该可以正常工作。在
之前运行一个log语句,如果
简单地说没有任何细节的“不起作用”会导致一个糟糕的问题。描述你期望发生的事情和你观察到的实际发生的事情。@ilansch你可以使用
alert(typeof IsUserAllowed)
以查看变量的类型。如果是字符串
“false”
,则
If(IsUserAllowed)
将计算为true(JavaScript在执行类型转换时将任何非空字符串视为true)。但是,与其使用变通方法,还不如解决导致它从布尔值(首次声明时)变为字符串的问题。@ilansch您可能应该使用
==
,这样它就不会进行任何类型转换(也就是说,只有当两边都是字符串并且字符串的内容相同时,它才会返回true)。但是,正如我已经说过的,这不是正确的操作过程:找出
IsUserAllowed
为什么不是布尔值,并修复它。
function setSelectedIdsInput(inputLogicalId) {
   if (IsUserAllowed) {
       // something true
   } else {
       // something false
   }
if(IsUserAllowed === true)
if (isUserAllowed) { }
if (isUserAllowed === true) { }
var IsUserAllowed = false;
function setSelectedIdsInput() {
  if (IsUserAllowed) {
    alert('TRUE');
  }
  else {
    alert('FALSE');
  }
};
setSelectedIdsInput();