▲ 499 ▼ Which of these javascript expressions is false? (lemmy.ml) submitted 1 year ago by cm0002@lemmy.world to c/programmer_humor@programming.dev 81 comments fedilink hide all child comments
[–] powermaker450@discuss.tchncs.de 16 points 1 year ago (2 children) C, because yes. permalink fedilink source hideshow 4 child comments replies: [–] Valmond@lemmy.world 8 points 1 year ago (2 children) I'd say C too because that's the only one that would be True in a normal programming language and this is javascript so... permalink fedilink source parent hideshow 4 child comments replies: [–] powermaker450@discuss.tchncs.de 4 points 1 year ago (2 children) probably not true in most other langauges. although I'm not well versed in the way numbers are represented in code and what makes a number "NaN", something tells me the technical implications of that would be quite bad in a production environment. the definitive way to check for NaN in JS would probably be something like // with `num` being an unknown value // Convert value to a number const res = Number(num); /* * First check if the number is 0, since 0 is a falsy * value in JS, and if it isn't, `NaN` is the only other * falsy number value */ const isNaN = res !== 0 && !res; permalink fedilink source parent hideshow 4 child comments replies: [–] smlckz@programming.dev 2 points 1 year ago* Another way to check whether a number is NaN: const isNaN = res !== res; As NaN is the only value out there that is not equal to itself. See my other comment on this post for more: https://programming.dev/comment/17221245 This comparison should work in every programming language out there that implements/respects/uses IEEE 754 floating point numbers. permalink fedilink source parent [–] Remavas@programming.dev 2 points 1 year ago NaN is a special floating point value. https://en.wikipedia.org/wiki/IEEE_754 It's weird but it makes sense why it was chosen to be this way. permalink fedilink source parent [–] Remavas@programming.dev 4 points 1 year ago (1 child) It's not true in a normal programming language. If it is true in yours, you should stop using it immediately. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) A non type should be a type. It should be of the type none. And it is in good script languages like Python so I don't know why you think it shouldn't. permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago (1 child) They say a picture is worth a thousand words. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) That's a Numpy type, not a Python typesm, try a=None b=None a==b permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent [–] modeler@lemmy.world 1 point 1 year ago Can't be C, C is the true path. permalink fedilink source parent
[–] Valmond@lemmy.world 8 points 1 year ago (2 children) I'd say C too because that's the only one that would be True in a normal programming language and this is javascript so... permalink fedilink source parent hideshow 4 child comments replies: [–] powermaker450@discuss.tchncs.de 4 points 1 year ago (2 children) probably not true in most other langauges. although I'm not well versed in the way numbers are represented in code and what makes a number "NaN", something tells me the technical implications of that would be quite bad in a production environment. the definitive way to check for NaN in JS would probably be something like // with `num` being an unknown value // Convert value to a number const res = Number(num); /* * First check if the number is 0, since 0 is a falsy * value in JS, and if it isn't, `NaN` is the only other * falsy number value */ const isNaN = res !== 0 && !res; permalink fedilink source parent hideshow 4 child comments replies: [–] smlckz@programming.dev 2 points 1 year ago* Another way to check whether a number is NaN: const isNaN = res !== res; As NaN is the only value out there that is not equal to itself. See my other comment on this post for more: https://programming.dev/comment/17221245 This comparison should work in every programming language out there that implements/respects/uses IEEE 754 floating point numbers. permalink fedilink source parent [–] Remavas@programming.dev 2 points 1 year ago NaN is a special floating point value. https://en.wikipedia.org/wiki/IEEE_754 It's weird but it makes sense why it was chosen to be this way. permalink fedilink source parent [–] Remavas@programming.dev 4 points 1 year ago (1 child) It's not true in a normal programming language. If it is true in yours, you should stop using it immediately. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) A non type should be a type. It should be of the type none. And it is in good script languages like Python so I don't know why you think it shouldn't. permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago (1 child) They say a picture is worth a thousand words. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) That's a Numpy type, not a Python typesm, try a=None b=None a==b permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent
[–] powermaker450@discuss.tchncs.de 4 points 1 year ago (2 children) probably not true in most other langauges. although I'm not well versed in the way numbers are represented in code and what makes a number "NaN", something tells me the technical implications of that would be quite bad in a production environment. the definitive way to check for NaN in JS would probably be something like // with `num` being an unknown value // Convert value to a number const res = Number(num); /* * First check if the number is 0, since 0 is a falsy * value in JS, and if it isn't, `NaN` is the only other * falsy number value */ const isNaN = res !== 0 && !res; permalink fedilink source parent hideshow 4 child comments replies: [–] smlckz@programming.dev 2 points 1 year ago* Another way to check whether a number is NaN: const isNaN = res !== res; As NaN is the only value out there that is not equal to itself. See my other comment on this post for more: https://programming.dev/comment/17221245 This comparison should work in every programming language out there that implements/respects/uses IEEE 754 floating point numbers. permalink fedilink source parent [–] Remavas@programming.dev 2 points 1 year ago NaN is a special floating point value. https://en.wikipedia.org/wiki/IEEE_754 It's weird but it makes sense why it was chosen to be this way. permalink fedilink source parent
[–] smlckz@programming.dev 2 points 1 year ago* Another way to check whether a number is NaN: const isNaN = res !== res; As NaN is the only value out there that is not equal to itself. See my other comment on this post for more: https://programming.dev/comment/17221245 This comparison should work in every programming language out there that implements/respects/uses IEEE 754 floating point numbers. permalink fedilink source parent
[–] Remavas@programming.dev 2 points 1 year ago NaN is a special floating point value. https://en.wikipedia.org/wiki/IEEE_754 It's weird but it makes sense why it was chosen to be this way. permalink fedilink source parent
[–] Remavas@programming.dev 4 points 1 year ago (1 child) It's not true in a normal programming language. If it is true in yours, you should stop using it immediately. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) A non type should be a type. It should be of the type none. And it is in good script languages like Python so I don't know why you think it shouldn't. permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago (1 child) They say a picture is worth a thousand words. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) That's a Numpy type, not a Python typesm, try a=None b=None a==b permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent
[–] Valmond@lemmy.world 1 point 1 year ago (1 child) A non type should be a type. It should be of the type none. And it is in good script languages like Python so I don't know why you think it shouldn't. permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago (1 child) They say a picture is worth a thousand words. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) That's a Numpy type, not a Python typesm, try a=None b=None a==b permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent
[–] Remavas@programming.dev 1 point 1 year ago (1 child) They say a picture is worth a thousand words. permalink fedilink source parent hideshow 2 child comments replies: [–] Valmond@lemmy.world 1 point 1 year ago (1 child) That's a Numpy type, not a Python typesm, try a=None b=None a==b permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent
[–] Valmond@lemmy.world 1 point 1 year ago (1 child) That's a Numpy type, not a Python typesm, try a=None b=None a==b permalink fedilink source parent hideshow 2 child comments replies: [–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent
[–] Remavas@programming.dev 1 point 1 year ago* That's not a type. A NaN is a floating point number (of type float). I used numpy because that's the easiest way to get a NaN. This is part of the floating point standard. This was never about None, which is a completely different thing. permalink fedilink source parent
[–] modeler@lemmy.world 1 point 1 year ago Can't be C, C is the true path. permalink fedilink source parent