Skip to content

Instantly share code, notes, and snippets.

@mhewedy
Created July 16, 2016 19:58
Show Gist options
  • Select an option

  • Save mhewedy/88967e571c69a168ea994ec8933e4bc1 to your computer and use it in GitHub Desktop.

Select an option

Save mhewedy/88967e571c69a168ea994ec8933e4bc1 to your computer and use it in GitHub Desktop.
js six strange literals
function check(v) {
var out = {}
out.value = v
if (v) {
out.ifCheck = true
} else {
out.ifCheck = false
}
out.trueCheck = (v == true)
out.falseCheck = (v == false)
out.strictTrueCheck = (v === true)
out.strictFalseCheck = (v === false)
console.log(out);
}
check(NaN)
check(undefined)
check(0)
check(false)
check('')
check(null)
/** Output
{ value: NaN,
ifCheck: false,
trueCheck: false,
falseCheck: false,
strictTrueCheck: false,
strictFalseCheck: false }
{ value: undefined,
ifCheck: false,
trueCheck: false,
falseCheck: false,
strictTrueCheck: false,
strictFalseCheck: false }
{ value: 0,
ifCheck: false,
trueCheck: false,
falseCheck: true, <<< notice this ouput here (0 == false) if true, however (0 === false) is false
strictTrueCheck: false,
strictFalseCheck: false }
{ value: false,
ifCheck: false,
trueCheck: false,
falseCheck: true,
strictTrueCheck: false,
strictFalseCheck: true }
{ value: '',
ifCheck: false,
trueCheck: false,
falseCheck: true, <<< notice this ouput here ('' == false) if true, however ('' === false) is false
strictTrueCheck: false,
strictFalseCheck: false }
{ value: null,
ifCheck: false,
trueCheck: false,
falseCheck: false,
strictTrueCheck: false,
strictFalseCheck: false }
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment