2011-12-24 2 views
0
  if(typeof(GUEST_IDS) != undefined){ 
      GUEST_IDS = GUEST_IDS.substr(1); 
      GUEST_IDS = GUEST_IDS.split(","); 
      for(GP in GUEST_POINTS){ 
      GUEST_ON = 0; 
      for(GID in GUEST_IDS){ 
       if(GUEST_IDS[GID] == GP){ 
       GUEST_ON = 1; 
       } 
      } 
      if(GUEST_ON == 0){ 
       GUEST_POINTS[GP].setVisible(false); 
      } 
      } 
     }else{ 
      for(GP in GUEST_POINTS){ 
      GUEST_POINTS[GP].setVisible(false); 
      } 
     } 

когда я бдительные GUEST_IDS он говорит, не определено, поэтому, если GUEST_IDS = не определено почему код работает, как будто если (TypeOf (GUEST_IDS)! = Не определено) {верно?Javascript не определен вопрос

ответ

2

typeof возвращает строку с указанием типа. Кроме того, typeof не требует скобок, и это хорошая практика, чтобы использовать !== над !=:

if(typeof GUEST_IDS !== "undefined") { 

Другие:

  • Не капитализировать все,
  • Использование var
  • Используйте обычный for цикл для итерации по массиву; не for in loop
  • Не перезаписывать существующие переменные; GUEST_IDS меняется из строки в массив
  • Использование === вместо ==
  • Вы можете использовать цепочки как var ids = GUEST_IDS.substr(1).split(",");
+0

Благодаря pimvdb! Я не могу поверить, что забыл, что возвращает строку, пробел. lol –

+0

Подождите, верхняя часть кода имеет GUEST_IDS = null; Итак, почему, когда я делаю typeof GUEST_IDS, он говорит Object при предупреждении? –

+0

@Shane Larson: Да, 'typeof null ===" object "'. Это действительно не определено. Вам может понадобиться просто 'if (GUEST_IDS) {' вместо этого. Это условие позволит что угодно, кроме 'undefined',' null' и некоторых других «ложных» значений. – pimvdb

Смежные вопросы