2013-09-14 3 views
2

Я просто попытался следующий код (в JavaScript), который должен возвращать «Это совершенно не определено», который не работал:ассоциативный массив: определить неопределенный?

var foo = {'foo' : 'bar', undefined : 'This is totally undefined!'}; 
alert(foo['toomany foobars'.match(/asdf/)]); 

пока это работает отлично:

var foo = {'foo' : 'bar', undefined : 'This is totally undefined!'}; 
alert(foo[undefined]); 

Я не понимаю , есть ли кто-нибудь, кто может объяснить?

спасибо заранее

ответ

1

Это потому, что

'toomany foobars'.match(/asdf/) === null 
null !== undefined 

Теперь, с другой стороны, если у вас это

var foo = {'foo' : 'bar', undefined : 'This is totally undefined!', null: 'and this one is null'}; 
alert(foo['toomany foobars'.match(/asdf/)]); 

Вы бы увидели его работу.


Причина этого в том, что undefined это значение в JavaScript, и null это другое значение. Когда вы используете эти два словаря, они возвращают (и должны возвращать) разные результаты.

+0

Я просто попробовал определение null, и он вернул «Это абсолютно не определено», спасибо! ... и жаль, что я сам об этом не думал – user2305193

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