仅在javascript中未定义的情况下分配变量

assigning variables only if undefined in javascript

本文关键字:情况下 分配 变量 未定义 javascript 仅在      更新时间:2023-09-26

我正试图以这种格式从url中提取两个关键字

localhost:3000/"charactername"/"realmname"

在这里,我想导出"charactername"answers"realmname",并将它们分配给变量。

我使用:

var charactername = req.url.split("/")[1];
console.log(charactername);
var realmname  = req.url.split("/")[2];
console.log(realmname);

一开始一切都很好,但后来似乎有人请求"favicon.ico",由于有了新的请求url,我的变量变得未定义。我试图通过将代码片段封装在if语句中来解决这个问题,如下所示:

if(req.url !== '/favicon.ico'){ 
var charactername = req.url.split("/")[1];
console.log(charactername);
var realmname  = req.url.split("/")[2];
console.log(realmname);
}

console.log输出告诉我变量被设置为正确的值,它从来没有说它是未定义的,所以它似乎可以工作。。然而,当代码的下一部分被执行时:

if(charactername.length > 0){
            res.writeHead(200, {'Content-Type': 'text/html'});
            renderer.view("header", {}, res);
            //get json from battle.net
            var characterProfile = new Profile(charactername, realmname);
            //on "end"
            characterProfile.on("end", function(profileJSON){
                //Show profile
                //Store values we need
                var values = {
                    avatarURL: profileJSON.thumbnail,
                    charactername: profileJSON.name,
                    realmname: profileJSON.realm,
                    level: profileJSON.level
                }
                //Simple response
                renderer.view("profile", values, res);
                renderer.view("footer", {}, res);
                res.end();
            });

我收到一个错误,说无法读取未定义的属性长度。因此,变量似乎无论如何都变得不确定了。有人知道如何解决这个问题的线索吗?

if(x === undefined){
  //do something
}

这会检查变量是否未定义,但我建议您首先检查导致错误的原因。

if(charactername&&charactername.length>0){