我将参数传递给我写的JavaScript库中的函数:
ffff.setup({
'size':{'width':'100','height':'100'}
});
在函数中,我选择它们:
var ffff = {
setup: function(config) {
if (config["size"]["width"]) {my_width = config["size"]["width"];}
if (config["size"]["height"]) {my_height = config["size"]["height"];}
}
}
我的错误是,如果我没有指定参数,我会收到Cannot read property 'height' of undefined
错误:(错误发生在if (config["size"]["height"])
)
ffffr.setup({
'size':{'width':'100'}
});
我应该如何检测是否提供了变量?
答案 0 :(得分:4)
可能有更优雅的方法(例如jQuery extends()如果你使用那个库),但是在一个非常基本的层面你可以做到
if(typeof config['size'] !== "undefined" && typeof config['size']['height'] !== "undefined")
答案 1 :(得分:1)
如果您正在查看配置对象,可以使用.hasOwnProperty
MDN
if( config.hasOwnProperty("propName") ){
//use config.propName
}
答案 2 :(得分:1)
if (config.size && config.size.width) ...
答案 3 :(得分:0)
尝试:
if (typeof variable === 'undefined') {
// variable is undefined
}
或者:
if (typeof (conf) === 'object') {
// object is undefined
}
答案 4 :(得分:0)
您可以使用
config["size"].hasOwnProperty('width')
答案 5 :(得分:0)
检查它是否已定义,并使用三元运算符设置默认值
(param===undefined)?default_value:param;
它将做的是检查它是否已定义,如果未定义则将其设置为您想要的任何值,但保持不变