Javascript if else子句中未定义对象的未定义属性

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][

应用程序范围中有一个LS对象,该对象包含产品或类别属性,具体取决于网页部分。因此,我必须检查并将数据保存在localStorage中。代码如下:

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>