如何在javascript中检查变量是否为空?

时间:2016-02-10 04:08:09

标签: javascript

private static async Task ChangeBackground()
{
    if (UserProfilePersonalizationSettings.IsSupported())
    {
        Uri uri = new Uri("https://source.unsplash.com/random/1920x1080");
        using (HttpClient client = new HttpClient())
        {
            try
            {
                HttpResponseMessage response = await client.GetAsync(uri);
                if (response != null && response.StatusCode == HttpStatusCode.Ok)
                {
                    string filename = "background.jpg";
                    var imageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
                    using (IRandomAccessStream stream = await imageFile.OpenAsync(FileAccessMode.ReadWrite))
                    {
                        await response.Content.WriteToStreamAsync(stream);
                    }
                    StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(filename);
                    UserProfilePersonalizationSettings settings = UserProfilePersonalizationSettings.Current;
                    if (!await settings.TrySetWallpaperImageAsync(file))
                    {
                        Debug.WriteLine("Failed");
                    }
                    else
                    {
                        Debug.WriteLine("Success");
                    }
                }
            }
            catch
            {
            }
        }
    }
}

(图片中的部分代码,没有支持pp) 我试图检查"联盟"变量是空的,因为某些"" corp"不属于"联盟"如果它试图显示一个空变量,它将是网站上的严重错误,所以有没有办法检查allianceName是否为空,从XML树中检索并将其设置为类似" No Alliance"如果它是空的? 谢谢

4 个答案:

答案 0 :(得分:2)

你在这里声明真正的变量

var corpName = " ";
var allianceName = " "

在JavaScript中,带有空格字符的字符串的值实际上是真实的。虽然上述值看起来空洞,但事实是它们不是。亲自尝试一下。

Boolean(" ");
=> true

要将这些变量设置为空,您需要声明它们没有空格字符

var corpName = "";
var allianceName = "";

完成此操作后,有两种方法可以检查变量是否为空

if (!corpName || !corpName.length)

假设你不小心包含了空格字符,有几种方法可以解决这个问题。我们可以在这些情况下修改这些字符串。

Boolean(" ".trim());
=> false

在上面的示例中,trim()函数用于从字符串中删除空白字符。

您还可以在字符串中搜索非空白字符

/\S/.test(" ")
=> false

\S修饰符查找所有非空白字符。

或者,您也可以使用替换功能

Boolean(" ".replace(/\s/g, ''));

全局标志g查找对前一个正则表达式的所有引用。

答案 1 :(得分:0)

我相信JavaScript中有一个名为isset()的函数,它接受一个参数,如果设置为某个值则返回true,如果不是则返回false。

答案 2 :(得分:0)

如果您只想检查变量中是否有任何值,请尝试此操作,

if (str) {
    //do something
}

,或者

//when undefined
if (typeof str == 'undefined'){
//do something
}

如果你需要专门检查空字符串是否为空,那么试试这个。

//when defined, but empty
if ((str.length == 0)||(str== ""))
{
//do something
}

答案 3 :(得分:0)

您可以尝试这样的事情:

注意:如果您的值为nullundefined,则!value?true:false应该有效。同样value.length也是很好的方法,但是应该在字符串的情况下使用。如果值为数字,value.length将返回0,即true进行空检查。



function isEmpty(value) {
  switch (typeof(value)) {
    case "string": return (value.length === 0);
    case "number":
    case "boolean": return false;
    case "undefined": return true;
    case "object": return !value ? true : false; // handling for null.
    default: return !value ? true : false
  }
}

var a = " ";
console.log(a, "is empty:", isEmpty(a))
console.log(a, "is empty:", isEmpty(a.trim()))

a = 0;
console.log(a, "is empty:", isEmpty(a))

a = undefined;
console.log(a, "is empty:", isEmpty(a))

a = null;
console.log(a, "is empty:", isEmpty(a))




此外,您可以更改

allianceName = (xmlhttp.responseXML.getElementsByTagName("alliance")[0] || {
   innerHTML: "
}).innerHTML;

allianceName = xmlhttp.responseXML.getElementsByTagName("alliance")[0].innerHTML || "";