2010-04-05 1 views
0

Я пытаюсь определить, был ли цвет предоставлен в качестве необязательного аргумента функции. чтобы определить это, я просто пишу if (color) {...} и поставляя NaN, если я не хочу, чтобы там был цвет.Значение цвета черного цвета ActionScript - NaN

Однако, кажется, что цвет черный (0x000000) также соответствует NaN. как я могу определить, присутствует ли аргумент аргумента заданного цвета и черный, если в качестве аргумента передан 0x000000?

+0

Проверьте свои предположения. 0x000000 равен 0, а не NaN. Чтобы проверить NaN, вы должны использовать isNaN. Также обратите внимание: «0x000000» (строка) не совпадает с 0x000000 (шестнадцатеричный литерал, представляющий 0). – 2010-04-05 04:28:33

ответ

4

Некоторый исходный код был бы уместным.

Это звучит, как вы говорите, что следующие условия эквивалентны:

if (NaN) {} 
if (0x000000) {} 

что верно. Я думаю, что вы хотите:

if (isFinite(color)) {} 

Adobe помощь: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/package.html#isFinite()

+0

Я не сомневаюсь, но почему 0x000000 не число? Я думал, что он будет равен нулю? Я искал в Интернете, и похоже, что это правильно, но я не мог найти объяснения. – Sandro

+0

Это не то, что 0 == NaN, это то, что NaN в выражении if вычисляется как false как 0. NaN имеет специальные правила сравнения. – drawnonward