Javascript if else子句中未定义对象的未定义属性
应用程序范围中有一个LS对象,该对象包含产品或类别属性,具体取决于网页部分。因此,我必须检查并将数据保存在localStorage中。代码如下:Javascript if else子句中未定义对象的未定义属性,javascript,Javascript,应用程序范围中有一个LS对象,该对象包含产品或类别属性,具体取决于网页部分。因此,我必须检查并将数据保存在localStorage中。代码如下: if (LS.product !== 'undefined') { data = { 'prod_id' : LS.product['id'], 'prod_name' : LS.product['name'], 'prod_price' : LS.variants[0][
if (LS.product !== 'undefined') {
data = {
'prod_id' : LS.product['id'],
'prod_name' : LS.product['name'],
'prod_price' : LS.variants[0]['price_number'],
'category' : '' //TODO
}
item_name = String('product-' + LS.product['id']) + '-' + String(Date.now());
localStorage.setItem(item_name, JSON.stringify(data));
}
else if (LS.category !== 'undefined') {
data = {
'category_id' : LS.category['id'],
'category_name' : LS.category['name'],
}
item_name = String('category-' + LS.category['id']) + '-' + String(Date.now());
localStorage.setItem(item_name, JSON.stringify(data));
}
else {
data = {};
}
问题是我得到了错误:
Uncaught TypeError: Cannot read property 'id' of undefined
但是,如果我只执行代码的相应部分,就可以很好地工作。我一直在试图找到解决方案,但没有成功。您正在检查字符串
“undefined”
,而不是值undefined
。尝试if(LS.product!==undefined){
和else if(LS.category!==undefined){
检查字符串“undefined”
而不是值undefined
。尝试if(LS.product!==undefined){
和else if(LS.category!==undefined){
您应该检查未定义的作为未定义的值,而不是作为字符串'undefined'
if (LS.product !== 'undefined') {
...
else if (LS.category !== 'undefined') {
应该是
if (LS.product !== undefined) {
...
else if (LS.category !== undefined) {
您应该检查undefined
是否为未定义的值,而不是'undefined'
if (LS.product !== 'undefined') {
...
else if (LS.category !== 'undefined') {
应该是
if (LS.product !== undefined) {
...
else if (LS.category !== undefined) {
字符串'undefined'
只是一个字符串,与值undefined
完全不同。错误出现在哪里,在LS.product['id']
或LS.category['id']
?如果(typeof LS.category!='undefined')和@Pointy是正确的,您应该使用if(LS.product!==undefined){
字符串'undefined'
只是一个字符串,与值undefined
完全不同。错误出现在哪里,在LS.product['id']
或LS.category['id']
?如果(typeof LS.category!='undefined')和@Pointy是正确的,您应该使用if(LS.product!==undefined){/code>