我试图设置一个值,如果它存在于json feed中。由于有时并非如此,因此我确实收到以下错误:
(index):703 Uncaught TypeError: Cannot read property 'price_min' of null
at Object.success ((index):703)
at i (jquery-1.12.0.min.js:2)
at Object.fireWith [as resolveWith] (jquery-1.12.0.min.js:2)
at y (jquery-1.12.0.min.js:4)
at XMLHttpRequest.c (jquery-1.12.0.min.js:4)
我的代码如下:
if (obj.stats.price_min !== undefined){
$('#price_from').val(obj.stats.price_min);
}
这不是测试未定义的正确方法吗?
答案 0 :(得分:0)
仅尝试访问不存在的属性将引发错误,您应该使用onpointer{something}
检查其存在:
obj.hasOwnProperty
var obj = {stats: null};
if (obj.hasOwnProperty('stats') && obj.stats && obj.stats.hasOwnProperty('price_min')) {
$('#price_from').val(obj.stats.price_min);
}
obj = {stats: {price_min: '200'}}
if (obj.hasOwnProperty('stats') && obj.stats && obj.stats.hasOwnProperty('price_min')) {
$('#price_from').val(obj.stats.price_min);
}
您也可以通过检查<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="price_from" />
来做到这一点,但首先应确保它不是undefined
:
null
var obj = {stats: null};
if (obj.stats !== undefined && obj.stats && obj.stats.price_min !== undefined) {
$('#price_from').val(obj.stats.price_min);
}
obj = {stats: {price_min: '200'}}
if (obj.stats !== undefined && obj.stats && obj.stats.price_min !== undefined) {
$('#price_from').val(obj.stats.price_min);
}