Underscore: _.isNumber(NaN) рд╕рддреНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рджрд┐рд╕ре░ 2011  ┬╖  38рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/underscore

рдЬреИрд╕рд╛ рдХрд┐ NaN рдХрд╛ рдЕрд░реНрде "рдирдВрдмрд░ рдирд╣реАрдВ" рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ isNumber рдЪреЗрдХ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЗрд╕реЗ рдЭреВрдареА рд╡рд╛рдкрд╕реА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЕрдиреНрдп рдЪрд░реНрдЪрд╛рдУрдВ рд╕реЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдареАрдХ рд╣реИ рддреЛ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХреАред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рд╣реИрдВ рдЬреЛ рддрд╛рд░, рд╕рдВрдЦреНрдпрд╛рдПрдВ рдФрд░ рд╕рдВрднрд╡рддрдГ NaN рд╣реИрдВред рдкрд╛рд░реНрд╕ рдЗрдВрдЯ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдзрд╛рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ parseInt рдФрд░ isFinite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рдХреНрд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдпрд╛ рдЖрддреНрдо рд╡рд░реНрдгрдирд╛рддреНрдордХ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрдпрд╛рдирдХ рдЧреЛрдЯреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реАрдХреНрд╖рдг рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА? рджреВрд╕рд░рд╛, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╛рд░реНрдердХ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдВрдзреЗрд░реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдЕрдВрдзрд╛ рд╢реЙрдЯ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬреЛ рдХрд┐ рдореЗрд░рд╛ 8 рд╡реАрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рднрд╛рдИ рдореБрдЭреЗ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЙрд╕ рдирд┐рдкреБрдг рд╕реНрдХреВрд▓реА рд╢рд┐рдХреНрд╖рд╛ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рднрдпрд╛рдирдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХреЗрдВред рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ред

рд╕рднреА 38 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рддреБрдо рд╕рд╣реА рд╣реЛ, рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рд╣реИред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдИрдИрдИрдИ 754 рдлреНрд▓реЛрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ рд╢рд╛рдпрдж рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ NaN рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдорд╛рди рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд: #рейреирез рдореЗрдВ рдЪрд░реНрдЪрд╛

рдкреВрдЫрдиреЗ рдореЗрдВ рдореЗрд░рд╛ рдХрд╣рдирд╛ рдпрд╣ рд╣реИ рдХрд┐, рдЬрдм рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдм рдХрд╛рд░реНрдп рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реВрдВ, рддреЛ isNumber рдирд╛рдо рдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдорд╛рди рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ "рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ?" рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрдгрдирд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рд░ NaN рдорд╛рди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд▓реНрдкрдирд╛ рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рдпрд╣ рд╕рд╣реА рдЙрддреНрддрд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реИрдВ "рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ?" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ "рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ" рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рд╕рд╣реА рд╣реЛ рддреЛ рдореИрдВ рдЕрдм рдЪреБрдк рд╣реЛ рдЬрд╛рдКрдБрдЧрд╛ :)

рдЖрдк isFinite рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЬреЗрдПрд╕ рдХреЛ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдареАрдХ рд╣реИ рддреЛ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХреАред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрдирдкреБрдЯ рд╣реИрдВ рдЬреЛ рддрд╛рд░, рд╕рдВрдЦреНрдпрд╛рдПрдВ рдФрд░ рд╕рдВрднрд╡рддрдГ NaN рд╣реИрдВред рдкрд╛рд░реНрд╕ рдЗрдВрдЯ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдзрд╛рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ parseInt рдФрд░ isFinite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рдХреНрд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдпрд╛ рдЖрддреНрдо рд╡рд░реНрдгрдирд╛рддреНрдордХ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрдпрд╛рдирдХ рдЧреЛрдЯреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реАрдХреНрд╖рдг рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА? рджреВрд╕рд░рд╛, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╛рд░реНрдердХ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдВрдзреЗрд░реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдЕрдВрдзрд╛ рд╢реЙрдЯ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬреЛ рдХрд┐ рдореЗрд░рд╛ 8 рд╡реАрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рднрд╛рдИ рдореБрдЭреЗ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЙрд╕ рдирд┐рдкреБрдг рд╕реНрдХреВрд▓реА рд╢рд┐рдХреНрд╖рд╛ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рднрдпрд╛рдирдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХреЗрдВред рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╢реБрдХреНрд░рд┐рдпрд╛ред

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ @jashkenas рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рдЕрдкрдорд╛рдирдЬрдирдХ рдпрд╛ рдХреГрдкрд╛рд▓реБ рдЖрд╡рд╛рдЬ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХрднреА-рдХрднреА рдРрд╕реЗ рд╣реА рдЙрддрд░ рдЬрд╛рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ рдореИрдВ рдмрд╛рддрдЪреАрдд рдХреЛ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЗрди рд╕рд░рд▓ рдЙрддреНрддрд░реЛрдВ рдХреЛ рджреЗрдХрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреА рдЖрдВрдЦреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА?

рд╢рд╛рдпрдж, рдкрдХреНрдХрд╛ред

рджреВрд╕рд░рд╛, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╛рд░реНрдердХ рд╣реИред

[[рдХрдХреНрд╖рд╛]] == "рд╕рдВрдЦреНрдпрд╛" рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдпрд╛ рдкрд░рд┐рдорд┐рдд рд╕рдВрдЦреНрдпрд╛рдПрдБ рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдпрд╛ рдкрд░рд┐рдореЗрдп рд╕рдВрдЦреНрдпрд╛рдПрдБ рдпрд╛ рдЬреЛ рднреА рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рдереЗ, рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВред

рд╕рднреА рдиреЗ рдХрд╣рд╛, рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдлрд╝реНрд▓рдлрд╝ рдЬреЛрдбрд╝рдирд╛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЙрди рд╕рдордпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЕрдореВрд░реНрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЯ рдХрд╛ рдПрдХ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдФрд░ рдлрд┐рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рд╛ рдЬреЛ рдЙрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _appeared_ рдерд╛ред +1 , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ @jashkenas рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред

рд╣рд╛рдВ - рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ _.isNumber true рдпрд╛ false рд╣реЛрдиреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВ NaN ред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╛рдж рдирд╣реАрдВ рд░рдЦреВрдВрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдПрдХ рдиреЛрдЯ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВред рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдХреЛрдИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рддрдХрдиреАрдХреА рддрдереНрдпреЛрдВ рдХреЛ рд░реМрдВрдж рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рдБ, NaN рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдкреВрдЫреВрдВ "рдХреНрдпрд╛ рдЖрдк рдПрдХ рдирдВрдмрд░ рд╣реИрдВ?" рдФрд░ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ "рдореИрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реВрдВ" рддреЛ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ - NaN - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ ... рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЭреВрдареА рд╡рд╛рдкрд╕реА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдЧреЛрдЪрд╛ рдХреЛ рдбреЙрдХреНрд╕ рдореЗрдВ рд░рдЦрдирд╛ - рдордиреБрд╖реНрдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп - рдмрд╕ рдХрдо рд╕рдордп рдХреЛрдбрд┐рдВрдЧ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рд░ рдХреЛ рдЦрд░реЛрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

@contentfree : NaN рдлреНрд▓реЛрдЯреНрд╕ рдХрд╛ рд╕рджрд╕реНрдп рд╣реИред JS рдореЗрдВ рд╣рд░ рдирдВрдмрд░ рдПрдХ рдлреНрд▓реЛрдЯ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ NaN рдирдВрдмрд░-рдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдорд┐рд▓рддрд╛ рд╣реИред NaN рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдореИрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реВрдВ"ред рдпрд╣ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдореЗрд░реА рдХрд┐рддрд╛рдм рдореЗрдВ рдХреЗрд╕ рдмрдВрджред рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ isFinite рдЕрдЧрд░ рдЖрдк рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдХрд┐ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ NaN / Infinity / -Infinity ред

рдорд░реЗ рд╣реБрдП рдШреЛрдбрд╝реЗ рдХреЛ рдкреАрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрд▓реНрдХрд┐...

рд╕рд┐рд░реНрдл рдХреНрдпреЛрдВ рдирд╣реАрдВ
obj instanceOf Number

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдЕрдЬреНрдЮрд╛рдд рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ (рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛) рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рдореИрдВ рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдмреЗрдХрд╛рд░ рдУрд╡рд░рд╣реЗрдб рдФрд░ рд╕рд┐рд░рджрд░реНрдж рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

instanceof рдСрдкрд░реЗрдЯрд░ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЖрджрд┐рдо рдирд╣реАрдВ: new Number(5) instanceof Number == true; 5 instanceof Number == false ред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝реНрд░реЗрдо рдореЗрдВ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред [[Class]] Object::toString рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рдиреЗ рдкрд░ +1 рдФрд░ рдЙрд╕реА рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВред

рд╕реБрдЭрд╛рд╡:
_.isNumber (рдСрдмреНрдЬреЗрдХреНрдЯ, [isFinite]);

рдпрд╣ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрдп рдХреЗ рд╕рд░рд▓ рдЬреЛрдбрд╝ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬрдм рдЗрд╕ рдЧреЛрдЪрд╛ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рдпрд╣ рд╕реАрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкрд░рд┐рдорд┐рдд рд╢рд╛рдпрдж рдЖрдк рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдереЗред

рдореЗрд░рд╛ 2рд╕реА

@ рдирд┐рдХрд▓- рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░, рд▓реЗрдХрд┐рди ... рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ isFinite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ?

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЪреВрдВрдХрд┐ _.isNaN рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рд╕рдорд░реВрдкрддрд╛ рдХреЗ рд▓рд┐рдП _.isFinite рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

_.isFinite = function (value) {
  return value > -1 / 0 && value < 1 / 0;
};

@рдХрд┐рдЯрдХреИрдореНрдмреНрд░рд┐рдЬ

рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рддрд╛рд░ рдкрд░рд┐рдорд┐рдд "0x0", "0xF", "2", рдЖрджрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛрдВрдЧреЗред рддреЛ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдЗрд╕реЗ _.isNumber рдпрд╛ рд╕рдордХрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

_.isFinite = function (obj) {
  return obj > -1/0 && obj < 1/0 && _.isNumber(obj);
};

рд╕рдВрдЦреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡реИрд▓ === + рд╡реИрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдВрдЪ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╢реЗрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

_.isFinite = function (obj) {
  return obj > -1/0 && obj < 1/0 && obj === +obj;
};

@octatone рдЬрд╝рд░реВрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ ... рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╡реЗ рддрд╛рд░ _are_ рдкрд░рд┐рдорд┐рдд рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП), рд▓реЗрдХрд┐рди рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдореМрдЬреВрджрд╛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред

_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, isValidNumber рдЬреЛ рдореМрдЬреВрджрд╛ _.isValidDate рдХреЗ рд╕рд╛рде рдЗрдирд▓рд╛рдЗрди рд╣реИ рдФрд░ isFinite рддрд░реНрдХ рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

@рдирд┐рдХрд▓-

NaN рдФрд░ Infinity _are_ рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛рдПрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдордХрд░рдг isValidNumber рдЗрд╕рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рднреНрд░рдорд┐рдд рдХрд░реЗрдЧрд╛ рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм isNumber рд╕реЗ isValidNumber рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рд╣реИ?

NaN рдФрд░ Infinity _are_ рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛рдПрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдордХрд░рдг isValidNumber рдЗрд╕рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рднреНрд░рдорд┐рдд рдХрд░реЗрдЧрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред

рдореИрдВрдиреЗ рдирд╛рдо рдирд╣реАрдВ рдХрд╣рд╛...

рдореБрдЭреЗ рднреА рдпрд╣ рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ _.isNumber(NaN) === true ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ @ contentfree рдХреЗ https://github.com/jashkenas/underscore/issues/406#issuecomment -4144992 рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рднреА рд╣реИ: рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╕реНрдордп рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд ред ;-)

рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░-рд╣рд╛рд░реНрдб-рдХреЛрд░-рдЬреЗрдПрд╕-рдХреЛрдбрд░реНрд╕ рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЛ рдпрд╣ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ рдЬрдм рд╡реЗ рдЗрд╕рдХреЗ рдирд╛рдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рдмрд╕ рдореЗрд░рд╛ рдЫреЛрдЯрд╛ 2┬втАжтДв

_.isNaN рднреА рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ:

рдиреЛрдЯ: рдпрд╣ рдореВрд▓ isNaN рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрдИ рдЕрдиреНрдп рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╣реА рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рддред

рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрдереЛрдВ рдореЗрдВ undefined рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЙрдЯ-рдП-рдирдВрдмрд░ рд╣реИред

рдореИрдВ рдЕрд░реНрде рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ, isNumber == Not a number рдпреЛрдЧреНрдпред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐, рдпрджрд┐ рдЖрдкрдХреЛ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдирд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВ?

рдореИрдВ рдЕрд░реНрде рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ,

рдирд╣реАрдВ, рдпрд╣ [[Class]] рддрд░рд╣ -Infinity , Infinity , рдФрд░ Object(2) ред рдпрд╣ рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рджреЗрд╡ рд╕реАрдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рднреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдирдВрдмрд░ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ -1 , рдХрдо рд╕реЗ рдХрдо Math.pow(2,32) , рдпрд╛ рдПрдХ рдкреВрд░реА рд╕рдВрдЦреНрдпрд╛ред -Infinity , Infinity рдпрд╛ NaN рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ _.isFinite рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕реА рдкреНрд░рдХрд╛рд░ _.isDate рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рджрд┐рдирд╛рдВрдХ рд╡рд╕реНрддреБ рдПрдХ рдорд╛рдиреНрдп рддрд┐рдерд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ "рдпрд╣ рднреА рджреЗрдЦреЗрдВ: isFinite" рдФрд░ "рдпрд╣ рднреА рджреЗрдЦреЗрдВ: ┬лрдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред

@michaelficarra рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрд▓реНрдкрдирд╛ рдореЗрдВ NaN рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ рдЬрдм рд╡реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ?

рд╣рдо рдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЬреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдмреБрдирд┐рдпрд╛рджреА рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рддреЛ рдЖрдкрдХреЛ isNumber(x) && isFinite(x) рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ рдареАрдХ рд╣реИ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдирдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЧреЛрдЪрд╛ рд╣реИ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИред

рдХрдбрд╝рд╛рдИ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдиреЙрдЯ рдП рдирдВрдмрд░ (NaN) isNumber рдирд╛рдордХ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╕рдЪ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдмреЗрд╣рддрд░ рдирд╛рдо isNumeric рдпрд╛ isNumericType рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ рдХрдИ рдШрдВрдЯреЗ рдмрд░реНрдмрд╛рдж рдХрд░ рджреЗрдЧрд╛, рдХрдо рд╕реЗ рдХрдо рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдЖрдПрдВрдЧреЗред

рддреЛ рдЖрдкрдХреЛ isNumber(x) && isFinite(x) рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ ES6 Number.isFinite рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _.isFinite рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдорд╛рди рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЖрджрд┐рдо рд╣реИ, рдкрд░рд┐рдорд┐рдд рд╣реИ, рдФрд░ рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

_.isNumber рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдиреНрдп [[Class]] рдЪреЗрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реИред

рдХрдбрд╝рд╛рдИ рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдиреЙрдЯ рдП рдирдВрдмрд░ (NaN) isNumber рдирд╛рдордХ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╕рдЪ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдмреЗрд╣рддрд░ рдирд╛рдо isNumeric рдпрд╛ isNumericType рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ, _.isNumber , рдФрд░ _.isDate ред

@jdalton рдЖрдк

рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред

@Walms 100% рд╕рд╣рдордд рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдХреЛ рджрд┐рдП рдЧрдП рдХрдерди рдХреА рдкреВрд░реНрдг "рд╢реБрджреНрдзрддрд╛" рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП NaN _рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ_ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╣реИред

рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ _.isNumber рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╣реИ, рдЬреЛ рд╕рдВрдЦреНрдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП true _.isNumber рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ, Object(2) рдЬреЛ рдХрд┐ object ?

рдпреЗ [[Class]] рддрд░реАрдХреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЗрд╕реЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ _.isFinite ES6 Number.isFinite ред рдпрджрд┐ рдЖрдк рдореВрд▓ is-number рд╣реИрдВ рддреЛ typeof x == 'number' ред рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╕рддреНрдпрд╛рдкрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рди NaN , Infinity , рдпрд╛ -Infinity , рд╕рднреА [[Class]] рдХрд╛ Number , рддреЛ _.isFinite рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХ рджрд╛рдиреЗрджрд╛рд░ рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрдбрд░рд╕реНрдХреЛрд░-рдпреЛрдЧрджрд╛рди рджреЗрдЦреЗрдВ ред рдЗрд╕рдореЗрдВ _.isNumeric , _.isInteger , _.isZero , _.isEven , _.isOdd , _.isFloat , _.isNegative , рдФрд░ _.isPositive ред

@jdalton рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реА рджреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рд╣реИред

рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ рдХрд┐ _.isNumber рдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдПрдХ рд╕рдВрджрд░реНрдн рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд╕рд░реНрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдереАред рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИрдВ, _.isNumber рдХреЗ рд▓рд┐рдП NaN рдХреЗ рд▓рд┐рдП рдЭреВрдареА рд╡рд╛рдкрд╕реА рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░-рдпреЛрдЧрджрд╛рди рдФрд░ isFinite рдЗрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реБрдП рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдореВрд▓реНрдп рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╕реЗ рд╕рдВрджрд░реНрдн рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрди рд╕рднреА рдиреЗ рдХрд╣рд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ Numbers рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдРрд╕реА рдмрд╛рддреЗрдВ рд╣реИрдВ рдЬреЛ рдЧреИрд░-рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдПрдХ рд╕реБрд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдХрдо рд╕реБрд╕рдВрдЧрдд рдмрдирд╛рдХрд░ _.isNumber рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрдо рд╕рд╣рдЬ рдмрдирд╛ рджреЗрдЧрд╛ред

рдпрд╣рд╛рдВ рдХреБрдЫ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:

# If you add two Numbers together you always get another Number back
# This function should always return true no matter what you pass it
closedUnderAddition = (a, b) -> !isNumber(a) || !isNumber(b) || isNumber(a + b)

closedUnderAddition(1,1) == true
closedUnderAddition(Number.MAX_INT,2**970) == true # false if isNumber checks finiteness

# If you divide two Numbers you always get another Number back
closedUnderDivision = (a, b) -> !isNumber(a) || !isNumber(b) || isNumber(a / b)

closedUnderDivision(1, 2) == true
closedUnderDivision(1, 0) == true # false if isNumber checks finiteness
closedUnderDivision(0, 0) == true # false if isNumber checks finiteness or NaN-ness

# Anything you cast to a Number is a Number
castsToNumber = (x) -> isNumber(Number(x))

castsToNumber(1) == true
castsToNumber(Infinity) == true # false if isNumber checks finiteness
castsToNumber("bees") == true # false if isNumber checks finiteness or NaN-ness
castsToNumber("3") == true

рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдЗрдХрд▓рдлрд┐рдХрд╛рд░рд╛ рдиреЗ рдХрд╣рд╛:

NaN рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдореИрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реВрдБ"ред рдпрд╣ рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред

рдпрд╛, рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, "рд╕рдВрдЦреНрдпрд╛рдПрдБ" рдФрд░ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВред NaN рдПрдХ "рдирдВрдмрд░" рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрдиреНрдлрд┐рдирд┐рдЯреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдирдВрдмрд░ рд╣реИ, -рдЗрдиреНрдлрд┐рдирд┐рдЯреА рдФрд░ -0 рдЬреИрд╕реА рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдЪреАрдЬреЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЬрдВрдЧрд▓реА рдФрд░ рдКрдиреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрдЦреНрдпрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИред

рджреВрд╕рд░реА рдУрд░ "рдирдВрдмрд░" рдПрдХ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рдХрд┐рд╕рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдпрд╛ рдХреЛрдИ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ , рдФрд░ рд╢рд╛рдпрдж рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рддрд╛рд░, рдмреВрд▓, рдордзреНрдпрд░рд╛рддреНрд░рд┐ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдХрднреА рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдЬреЛ рд╣рд░ рдХрд┐рд╕реА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реЛред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореБрджреНрджрд╛ рд╣реИред

рдХреНрдпрд╛ "рдирдВрдмрд░" рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдмреНрдж рдХреА рддрд░рд╣ рджрд┐рдЦрдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ?

рдЕрдЪреНрдЫреЗ рдЕрдВрдХ, @sgentleред рдореИрдВ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдкрд░ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрд╡ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рдЙрдкрд╛рдп рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдкрд░ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдмрд╕ NaN рдХреЛ "рдирдВрдмрд░ рдирд╣реАрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рди рдорд╛рдиреЗрдВред NaN рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореВрд▓реНрдп рд╣реИред

рдмрд╕ NaN рдХреЛ "рдирдВрдмрд░ рдирд╣реАрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рди рдорд╛рдиреЗрдВред NaN рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореВрд▓реНрдп рд╣реИред

рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ "рдиреЙрдЯ рдП рдирдВрдмрд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реИ
рд╡рд░ _false = "рд╕рдЪ";
рд╣рд╛рдБ, рдЖрдк рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ _false рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

@Walms рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдирд╛рдо рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЬреЗрдПрд╕ рдХреА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рд╣рдо рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджреЛрд╖ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ "NaN" рдирд╛рдо рджрд┐рдпрд╛ рд╣реИред http://en.wikipedia.org/wiki/NaN

рдареАрдХ рд╣реИ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ _.isNumber(NaN) false рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдП ... рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрдВрднреАрд░ рд╕рд┐рд░ рдЦреБрдЬрд▓рд╛рдПрдВ рдЬрдм рддрдХ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдпрд╣реА рдХрд╛рд░рдг рдерд╛ред

if (isNaN(Number(value))) {
  alert('Number required.');
}

@pspi рд╕рд╣рдордд рд╣реБрдПред _.isNumber() рдХреЛ _semantic_ рдЕрд░реНрде рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдХрднреА рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред ._isFinite() рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдПрдХ рджрд┐рди рдмрд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ _.isFinite('1') true , рднрд▓реЗ рд╣реА рддрд░реНрдХ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рди рд╣реЛред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

xiaoliwang picture xiaoliwang  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

githublyp picture githublyp  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

markvr picture markvr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jezen picture jezen  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdalton picture jdalton  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ