繁体   English   中英

无法将值分配给未定义的变量

[英]Can't assign value to undefined variable

我从请求中获取参数。 有时设置了“数字”,有时没有设置。 如果不是,我想将其设置为1,但不起作用

        var nombre = parameter.number;
        console.log("Nombre : " + nombre);
        console.log("Nombre : " + JSON.stringify(nombre));
        if(nombre==undefined || nombre ==null || JSON.stringify(nombre)=="")
            nombre=1;
        console.log(nombre);

这是我在控制台中得到的:

  • 2018-08-06T09:42:42.884852 + 00:00 app [web.1]:Nombre:
  • 2018-08-06T09:42:42.884941 + 00:00 app [web.1]:Nombre:“”
  • 2018-08-06T09:42:42.885026 + 00:00 app [web.1]:未定义

只需使用if(!nombre)作为条件。 它适用于您要比较的那些:

 //for undefined var nombre = undefined; if(!nombre) nombre=1; console.log(nombre); //for null nombre = null; if(!nombre) nombre=1; console.log(nombre); //for '' nombre = ''; if(!nombre) nombre=1; console.log(nombre); 

如果为真[1],则JS中的逻辑或运算符( || )将返回其左侧的值,否则返回右侧的值。

所以

 var nombre = parameter.number || 1;

任何时候parameter.number都不会被视为true时,将为nombre赋予值1。

如果您需要专门检查undefined则需要明确检查undefined (但实际上,很少要区别对待null )。

 var nombre = parameter.number !== undefined ? parameter.number : 1;

[1] “ Truthy”:JS需要布尔值时将其视为true的值。 例如。 非空字符串"0"被视为true。

  JSON.stringify(nombre) == ""

这种比较是行不通的。 正如您在控制台中看到的那样, nombre实际上被字符串化为'“”'(包含两个“”的字符串),因此您的比较将失败,因为该字符串不为空(“”)。因此,您实际上想这样做:

 nombre === ""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM