检查JavaScript对象参数是否存在

时间:2017-08-07 11:14:19

标签: javascript jquery

我用object参数创建了一个函数。如何检查是否设置了对象参数。未设置时显示错误。

function run(params) {
    if (params.offsettop) {
        alert("offsettop is set");
    } else {
        alert("offsettop is not set");
    }
}
run();

8 个答案:

答案 0 :(得分:1)

您需要确保params不是nullundefined(尽管您可以通过检查它是否真实而逃脱)。然后要真正检查对象属性是否存在,请使用in(检查对象或其任何原型上是否存在该属性)或.hasOwnProperty()(仅检查对象):

function run(params) {
    if (params && "offsettop" in params) {
        alert("offsettop is set");
    } else {
        alert("offsettop is not set");
    }
}

示例:

function run(params) {
    if (params && "offsettop" in params) {
        console.log("offsettop is set: " + params.offsettop);
    } else {
        console.log("offsettop is not set");
    }
}
run();
run({offsettop: 0});

的其他选项
if (params && "offsettop" in params) {

if (params != null && "offsettop" in params) {

示例:

function run(params) {
    if (params != null && "offsettop" in params) {
        console.log("offsettop is set: " + params.offsettop);
    } else {
        console.log("offsettop is not set");
    }
}
run();
run({offsettop: 0});

if (typeof params == "object" && params && "offsettop" in params) {

示例:

function run(params) {
    if (typeof params == "object" && params && "offsettop" in params) {
        console.log("offsettop is set: " + params.offsettop);
    } else {
        console.log("offsettop is not set");
    }
}
run();
run({offsettop: 0});

这与if (params && typeof params.offsettop === "undefined")if (params && params.offsettop)有根本的不同,因为它将确定属性是否可靠存在,而typeof检查失败并显示{offsettop: undefined}并且truthy检查失败, {offsettop: 0}(以及其他一些虚假值)。

答案 1 :(得分:0)

首先检查是否设置了params,然后检查是否设置了params.offsettop

function run(params) {
  if (params && params.offsettop) {
    alert("offsettop is set");
  } else {
    alert("offsettop is not set");
  }
}
run();

答案 2 :(得分:0)

使用此:



function run(params) {
  if ((typeof params!= "undefined") && (typeof params.offsettop != "undefined")) 
  {
 alert("offsettop is set");
  }
  else {
 alert("offsettop is not set");
  }
}
run();




答案 3 :(得分:0)

符合#hasOwnProperty功能 - 它会检查对象是否具有指定的属性

见下面的演示:

function run(params) {
  if (params && params.hasOwnProperty('offsettop')) {
    console.log("offsettop is set");
  } else {
    console.log("offsettop is not set");
  }
}
run({offsettop: 23});
run();

答案 4 :(得分:0)

两者都有效:

function run(params) {

  if ( params && params.hasOwnProperty("offsettop" )) {
    alert("offsettop is set");
  } else {
    alert("offsettop is not set");
  }
}
run();

或者像@Justinas写道:if ( params && params.offsettop )虽然我想知道为什么没有标记为“回答”

答案 5 :(得分:0)

我们可以通过下面的方法检查一个变量是否是对象,然后它包含给定的属性

const run = (params) => { 
 if (typeof params === 'object' && params !== null && 
  Object.prototype.hasOwnProperty.call(params, 'offsettop')) {
  console.log('Params is an object and has property named offsettop');
 }
 else {
  console.log('Failed')
 }
}

答案 6 :(得分:-1)

你可以写下面的代码。

function run(params) {
  if (params && params['offsettop']) {
    alert("offsettop is set");
  } else {
    alert("offsettop is not set");
  }
}
run();
run({offsettop:25})

答案 7 :(得分:-3)

  if(params && typeof params.offsettop == 'undefined'){
      //parameter is not set
  }