我用object参数创建了一个函数。如何检查是否设置了对象参数。未设置时显示错误。
function run(params) {
if (params.offsettop) {
alert("offsettop is set");
} else {
alert("offsettop is not set");
}
}
run();
答案 0 :(得分:1)
您需要确保params
不是null
或undefined
(尽管您可以通过检查它是否真实而逃脱)。然后要真正检查对象属性是否存在,请使用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
}