我从请求中获取参数。有时设置了“数字”,有时没有设置。如果不是,我想将其设置为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);
这就是我在控制台中看到的内容:
答案 0 :(得分:2)
只需使用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 :(得分:2)
如果为true [1] ,则JS中的逻辑或运算符(||
)将返回其左侧的值,否则返回右侧的值。
所以
var nombre = parameter.number || 1;
只要nombre
不被视为真,将为parameter.number
赋予值1。
如果您需要专门检查undefined
,则需要显式检查undefined
(但实际上,很少有想对null
进行区别对待的情况。)
var nombre = parameter.number !== undefined ? parameter.number : 1;
[1] “ Truthy”:JS需要布尔值时将其视为true的值。例如。 "0"
(非空字符串)被视为true。
答案 2 :(得分:0)
JSON.stringify(nombre) == ""
这种比较是行不通的。如您在控制台中所见,nombre
实际上被字符串化为'“”'(包含两个“”的字符串),因此您的比较将失败,因为该字符串不为空(“”)。因此,您实际上想要做
nombre === ""