Skip to content

Instantly share code, notes, and snippets.

@lorenzoongithub
Last active August 29, 2015 14:16
Show Gist options
  • Save lorenzoongithub/344311f27fd88a9c2be8 to your computer and use it in GitHub Desktop.
Save lorenzoongithub/344311f27fd88a9c2be8 to your computer and use it in GitHub Desktop.
// Based on an article by kyle simpson - youdontknowjs
// ===================================================
//
// String(x)
//
if ( String(0) !== "0") throw ''
if ( String(.0) !== "0") throw ''
if ( String(-0) !== "0") throw ''
if ( isNaN( String(NaN) ) === false) throw ''
if ( String('') !== "") throw ''
if ( String(' ') !== " ") throw ''
if ( String('\n\n') !== "\n\n") throw ''
if ( isNaN( String(null) ) === false) throw ''
if ( isNaN( String(undefined) ) === false) throw ''
if ( isNaN( String(true) ) === false) throw ''
if ( isNaN( String(false) ) === false) throw ''
if ( isNaN( String([/ /]) ) === false) throw ''
if ( String(Infinity) !== "Infinity") throw ''
if ( String(-Infinity) !== "-Infinity") throw ''
if ( String('Infinity') !== "Infinity") throw ''
if ( String('-Infinity') !== "-Infinity") throw ''
if ( isNaN( String(function(){}) ) === false) throw ''
if ( String([]) !== "") throw ''
if ( String([0]) !== "0") throw ''
if ( String([.0]) !== "0") throw ''
if ( String([-0]) !== "0") throw ''
if ( isNaN( String([NaN]) ) === false) throw ''
if ( String(['']) !== "") throw ''
if ( String([' ']) !== " ") throw ''
if ( String(['\n\n']) !== "\n\n") throw ''
if ( String([null]) !== "") throw ''
if ( String([undefined]) !== "") throw ''
if ( isNaN( String([false]) ) === false) throw ''
if ( isNaN( String([true]) ) === false) throw ''
if ( isNaN( String([/ /]) ) === false) throw ''
if ( String([,]) !== "") throw ''
if ( String([[]]) !== "") throw ''
if ( String([Infinity]) !== "Infinity") throw ''
if ( String([-Infinity]) !== "-Infinity") throw ''
if ( String(['Infinity']) !== "Infinity") throw ''
if ( String(['-Infinity']) !== "-Infinity") throw ''
if ( isNaN( String([function(){}]) ) === false) throw ''
if ( isNaN( String({}) ) === false) throw ''
caughtException = false;
try { String(Object.create(null)) } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( String({'':null}) ) === false) throw ''
if ( isNaN( String({' ':null}) ) === false) throw ''
if ( isNaN( String({'\n\n':null}) ) === false) throw ''
if ( isNaN( String({'':undefined}) ) === false) throw ''
if ( isNaN( String({'':function(){}}) ) === false) throw ''
//
// x + ''
//
if ( 0 + '' !== "0") throw ''
if ( .0 + '' !== "0") throw ''
if ( -0 + '' !== "0") throw ''
if ( isNaN( NaN + '' ) === false) throw ''
if ( '' + '' !== "") throw ''
if ( ' ' + '' !== " ") throw ''
if ( '\n\n' + '' !== "\n\n") throw ''
if ( isNaN( null + '' ) === false) throw ''
if ( isNaN( undefined + '' ) === false) throw ''
if ( isNaN( true + '' ) === false) throw ''
if ( isNaN( false + '' ) === false) throw ''
if ( isNaN( [/ /] + '' ) === false) throw ''
if ( Infinity + '' !== "Infinity") throw ''
if ( -Infinity + '' !== "-Infinity") throw ''
if ( 'Infinity' + '' !== "Infinity") throw ''
if ( '-Infinity' + '' !== "-Infinity") throw ''
if ( isNaN( function(){} + '' ) === false) throw ''
if ( [] + '' !== "") throw ''
if ( [0] + '' !== "0") throw ''
if ( [.0] + '' !== "0") throw ''
if ( [-0] + '' !== "0") throw ''
if ( isNaN( [NaN] + '' ) === false) throw ''
if ( [''] + '' !== "") throw ''
if ( [' '] + '' !== " ") throw ''
if ( ['\n\n'] + '' !== "\n\n") throw ''
if ( [null] + '' !== "") throw ''
if ( [undefined] + '' !== "") throw ''
if ( isNaN( [false] + '' ) === false) throw ''
if ( isNaN( [true] + '' ) === false) throw ''
if ( isNaN( [/ /] + '' ) === false) throw ''
if ( [,] + '' !== "") throw ''
if ( [[]] + '' !== "") throw ''
if ( [Infinity] + '' !== "Infinity") throw ''
if ( [-Infinity] + '' !== "-Infinity") throw ''
if ( ['Infinity'] + '' !== "Infinity") throw ''
if ( ['-Infinity'] + '' !== "-Infinity") throw ''
if ( isNaN( [function(){}] + '' ) === false) throw ''
if ( isNaN( {} + '' ) === false) throw ''
caughtException = false;
try { Object.create(null) + '' } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( {'':null} + '' ) === false) throw ''
if ( isNaN( {' ':null} + '' ) === false) throw ''
if ( isNaN( {'\n\n':null} + '' ) === false) throw ''
if ( isNaN( {'':undefined} + '' ) === false) throw ''
if ( isNaN( {'':function(){}} + '' ) === false) throw ''
//
// JSON.stringify(x)
//
if ( JSON.stringify(0) !== "0") throw ''
if ( JSON.stringify(.0) !== "0") throw ''
if ( JSON.stringify(-0) !== "0") throw ''
if ( isNaN( JSON.stringify(NaN) ) === false) throw ''
if ( isNaN( JSON.stringify('') ) === false) throw ''
if ( isNaN( JSON.stringify(' ') ) === false) throw ''
if ( isNaN( JSON.stringify('\n\n') ) === false) throw ''
if ( isNaN( JSON.stringify(null) ) === false) throw ''
if ( isNaN( JSON.stringify(undefined) ) === false) throw ''
if ( isNaN( JSON.stringify(true) ) === false) throw ''
if ( isNaN( JSON.stringify(false) ) === false) throw ''
if ( isNaN( JSON.stringify([/ /]) ) === false) throw ''
if ( isNaN( JSON.stringify(Infinity) ) === false) throw ''
if ( isNaN( JSON.stringify(-Infinity) ) === false) throw ''
if ( isNaN( JSON.stringify('Infinity') ) === false) throw ''
if ( isNaN( JSON.stringify('-Infinity') ) === false) throw ''
if ( isNaN( JSON.stringify(function(){}) ) === false) throw ''
if ( isNaN( JSON.stringify([]) ) === false) throw ''
if ( isNaN( JSON.stringify([0]) ) === false) throw ''
if ( isNaN( JSON.stringify([.0]) ) === false) throw ''
if ( isNaN( JSON.stringify([-0]) ) === false) throw ''
if ( isNaN( JSON.stringify([NaN]) ) === false) throw ''
if ( isNaN( JSON.stringify(['']) ) === false) throw ''
if ( isNaN( JSON.stringify([' ']) ) === false) throw ''
if ( isNaN( JSON.stringify(['\n\n']) ) === false) throw ''
if ( isNaN( JSON.stringify([null]) ) === false) throw ''
if ( isNaN( JSON.stringify([undefined]) ) === false) throw ''
if ( isNaN( JSON.stringify([false]) ) === false) throw ''
if ( isNaN( JSON.stringify([true]) ) === false) throw ''
if ( isNaN( JSON.stringify([/ /]) ) === false) throw ''
if ( isNaN( JSON.stringify([,]) ) === false) throw ''
if ( isNaN( JSON.stringify([[]]) ) === false) throw ''
if ( isNaN( JSON.stringify([Infinity]) ) === false) throw ''
if ( isNaN( JSON.stringify([-Infinity]) ) === false) throw ''
if ( isNaN( JSON.stringify(['Infinity']) ) === false) throw ''
if ( isNaN( JSON.stringify(['-Infinity']) ) === false) throw ''
if ( isNaN( JSON.stringify([function(){}]) ) === false) throw ''
if ( isNaN( JSON.stringify({}) ) === false) throw ''
if ( isNaN( JSON.stringify(Object.create(null)) ) === false) throw ''
if ( isNaN( JSON.stringify({'':null}) ) === false) throw ''
if ( isNaN( JSON.stringify({' ':null}) ) === false) throw ''
if ( isNaN( JSON.stringify({'\n\n':null}) ) === false) throw ''
if ( isNaN( JSON.stringify({'':undefined}) ) === false) throw ''
if ( isNaN( JSON.stringify({'':function(){}}) ) === false) throw ''
//
// x.toString()
//
if ( (0).toString() !== "0") throw ''
if ( (.0).toString() !== "0") throw ''
if ( (-0).toString() !== "0") throw ''
if ( isNaN( NaN.toString() ) === false) throw ''
if ( ''.toString() !== "") throw ''
if ( ' '.toString() !== " ") throw ''
if ( '\n\n'.toString() !== "\n\n") throw ''
caughtException = false;
try { null.toString() } catch (e) { caughtException = true }
if (caughtException == false) throw ''
caughtException = false;
try { undefined.toString() } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( true.toString() ) === false) throw ''
if ( isNaN( false.toString() ) === false) throw ''
if ( isNaN( [/ /].toString() ) === false) throw ''
if ( Infinity.toString() !== "Infinity") throw ''
if ( -Infinity.toString() !== -Infinity) throw ''
if ( 'Infinity'.toString() !== "Infinity") throw ''
if ( '-Infinity'.toString() !== "-Infinity") throw ''
if ( isNaN( function(){}.toString() ) === false) throw ''
if ( [].toString() !== "") throw ''
if ( [0].toString() !== "0") throw ''
if ( [.0].toString() !== "0") throw ''
if ( [-0].toString() !== "0") throw ''
if ( isNaN( [NaN].toString() ) === false) throw ''
if ( [''].toString() !== "") throw ''
if ( [' '].toString() !== " ") throw ''
if ( ['\n\n'].toString() !== "\n\n") throw ''
if ( [null].toString() !== "") throw ''
if ( [undefined].toString() !== "") throw ''
if ( isNaN( [false].toString() ) === false) throw ''
if ( isNaN( [true].toString() ) === false) throw ''
if ( isNaN( [/ /].toString() ) === false) throw ''
if ( [,].toString() !== "") throw ''
if ( [[]].toString() !== "") throw ''
if ( [Infinity].toString() !== "Infinity") throw ''
if ( [-Infinity].toString() !== "-Infinity") throw ''
if ( ['Infinity'].toString() !== "Infinity") throw ''
if ( ['-Infinity'].toString() !== "-Infinity") throw ''
if ( isNaN( [function(){}].toString() ) === false) throw ''
if ( isNaN( {}.toString() ) === false) throw ''
caughtException = false;
try { Object.create(null).toString() } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( {'':null}.toString() ) === false) throw ''
if ( isNaN( {' ':null}.toString() ) === false) throw ''
if ( isNaN( {'\n\n':null}.toString() ) === false) throw ''
if ( isNaN( {'':undefined}.toString() ) === false) throw ''
if ( isNaN( {'':function(){}}.toString() ) === false) throw ''
//
// {}.toString.call(x)
//
if ( isNaN( {}.toString.call(0) ) === false) throw ''
if ( isNaN( {}.toString.call(.0) ) === false) throw ''
if ( isNaN( {}.toString.call(-0) ) === false) throw ''
if ( isNaN( {}.toString.call(NaN) ) === false) throw ''
if ( isNaN( {}.toString.call('') ) === false) throw ''
if ( isNaN( {}.toString.call(' ') ) === false) throw ''
if ( isNaN( {}.toString.call('\n\n') ) === false) throw ''
if ( isNaN( {}.toString.call(null) ) === false) throw ''
if ( isNaN( {}.toString.call(undefined) ) === false) throw ''
if ( isNaN( {}.toString.call(true) ) === false) throw ''
if ( isNaN( {}.toString.call(false) ) === false) throw ''
if ( isNaN( {}.toString.call([/ /]) ) === false) throw ''
if ( isNaN( {}.toString.call(Infinity) ) === false) throw ''
if ( isNaN( {}.toString.call(-Infinity) ) === false) throw ''
if ( isNaN( {}.toString.call('Infinity') ) === false) throw ''
if ( isNaN( {}.toString.call('-Infinity') ) === false) throw ''
if ( isNaN( {}.toString.call(function(){}) ) === false) throw ''
if ( isNaN( {}.toString.call([]) ) === false) throw ''
if ( isNaN( {}.toString.call([0]) ) === false) throw ''
if ( isNaN( {}.toString.call([.0]) ) === false) throw ''
if ( isNaN( {}.toString.call([-0]) ) === false) throw ''
if ( isNaN( {}.toString.call([NaN]) ) === false) throw ''
if ( isNaN( {}.toString.call(['']) ) === false) throw ''
if ( isNaN( {}.toString.call([' ']) ) === false) throw ''
if ( isNaN( {}.toString.call(['\n\n']) ) === false) throw ''
if ( isNaN( {}.toString.call([null]) ) === false) throw ''
if ( isNaN( {}.toString.call([undefined]) ) === false) throw ''
if ( isNaN( {}.toString.call([false]) ) === false) throw ''
if ( isNaN( {}.toString.call([true]) ) === false) throw ''
if ( isNaN( {}.toString.call([/ /]) ) === false) throw ''
if ( isNaN( {}.toString.call([,]) ) === false) throw ''
if ( isNaN( {}.toString.call([[]]) ) === false) throw ''
if ( isNaN( {}.toString.call([Infinity]) ) === false) throw ''
if ( isNaN( {}.toString.call([-Infinity]) ) === false) throw ''
if ( isNaN( {}.toString.call(['Infinity']) ) === false) throw ''
if ( isNaN( {}.toString.call(['-Infinity']) ) === false) throw ''
if ( isNaN( {}.toString.call([function(){}]) ) === false) throw ''
if ( isNaN( {}.toString.call({}) ) === false) throw ''
if ( isNaN( {}.toString.call(Object.create(null)) ) === false) throw ''
if ( isNaN( {}.toString.call({'':null}) ) === false) throw ''
if ( isNaN( {}.toString.call({' ':null}) ) === false) throw ''
if ( isNaN( {}.toString.call({'\n\n':null}) ) === false) throw ''
if ( isNaN( {}.toString.call({'':undefined}) ) === false) throw ''
if ( isNaN( {}.toString.call({'':function(){}}) ) === false) throw ''
//
// +x
//
if ( +0 !== 0) throw ''
if ( +.0 !== 0) throw ''
if ( +-0 !== 0) throw ''
if ( isNaN( +NaN ) === false) throw ''
if ( +'' !== 0) throw ''
if ( +' ' !== 0) throw ''
if ( +'\n\n' !== 0) throw ''
if ( +null !== 0) throw ''
if ( isNaN( +undefined ) === false) throw ''
if ( +true !== 1) throw ''
if ( +false !== 0) throw ''
if ( isNaN( +[/ /] ) === false) throw ''
if ( +Infinity !== +Infinity) throw ''
if ( +-Infinity !== -Infinity) throw ''
if ( +'Infinity' !== +Infinity) throw ''
if ( +'-Infinity' !== -Infinity) throw ''
if ( isNaN( +function(){} ) === false) throw ''
if ( +[] !== 0) throw ''
if ( +[0] !== 0) throw ''
if ( +[.0] !== 0) throw ''
if ( +[-0] !== 0) throw ''
if ( isNaN( +[NaN] ) === false) throw ''
if ( +[''] !== 0) throw ''
if ( +[' '] !== 0) throw ''
if ( +['\n\n'] !== 0) throw ''
if ( +[null] !== 0) throw ''
if ( +[undefined] !== 0) throw ''
if ( isNaN( +[false] ) === false) throw ''
if ( isNaN( +[true] ) === false) throw ''
if ( isNaN( +[/ /] ) === false) throw ''
if ( +[,] !== 0) throw ''
if ( +[[]] !== 0) throw ''
if ( +[Infinity] !== +Infinity) throw ''
if ( +[-Infinity] !== -Infinity) throw ''
if ( +['Infinity'] !== +Infinity) throw ''
if ( +['-Infinity'] !== -Infinity) throw ''
if ( isNaN( +[function(){}] ) === false) throw ''
if ( isNaN( +{} ) === false) throw ''
caughtException = false;
try { +Object.create(null) } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( +{'':null} ) === false) throw ''
if ( isNaN( +{' ':null} ) === false) throw ''
if ( isNaN( +{'\n\n':null} ) === false) throw ''
if ( isNaN( +{'':undefined} ) === false) throw ''
if ( isNaN( +{'':function(){}} ) === false) throw ''
//
// x * 1
//
if ( 0 * 1 !== 0) throw ''
if ( .0 * 1 !== 0) throw ''
if ( -0 * 1 !== 0) throw ''
if ( isNaN( NaN * 1 ) === false) throw ''
if ( '' * 1 !== 0) throw ''
if ( ' ' * 1 !== 0) throw ''
if ( '\n\n' * 1 !== 0) throw ''
if ( null * 1 !== 0) throw ''
if ( isNaN( undefined * 1 ) === false) throw ''
if ( true * 1 !== 1) throw ''
if ( false * 1 !== 0) throw ''
if ( isNaN( [/ /] * 1 ) === false) throw ''
if ( Infinity * 1 !== +Infinity) throw ''
if ( -Infinity * 1 !== -Infinity) throw ''
if ( 'Infinity' * 1 !== +Infinity) throw ''
if ( '-Infinity' * 1 !== -Infinity) throw ''
if ( isNaN( function(){} * 1 ) === false) throw ''
if ( [] * 1 !== 0) throw ''
if ( [0] * 1 !== 0) throw ''
if ( [.0] * 1 !== 0) throw ''
if ( [-0] * 1 !== 0) throw ''
if ( isNaN( [NaN] * 1 ) === false) throw ''
if ( [''] * 1 !== 0) throw ''
if ( [' '] * 1 !== 0) throw ''
if ( ['\n\n'] * 1 !== 0) throw ''
if ( [null] * 1 !== 0) throw ''
if ( [undefined] * 1 !== 0) throw ''
if ( isNaN( [false] * 1 ) === false) throw ''
if ( isNaN( [true] * 1 ) === false) throw ''
if ( isNaN( [/ /] * 1 ) === false) throw ''
if ( [,] * 1 !== 0) throw ''
if ( [[]] * 1 !== 0) throw ''
if ( [Infinity] * 1 !== +Infinity) throw ''
if ( [-Infinity] * 1 !== -Infinity) throw ''
if ( ['Infinity'] * 1 !== +Infinity) throw ''
if ( ['-Infinity'] * 1 !== -Infinity) throw ''
if ( isNaN( [function(){}] * 1 ) === false) throw ''
if ( isNaN( {} * 1 ) === false) throw ''
caughtException = false;
try { Object.create(null) * 1 } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( {'':null} * 1 ) === false) throw ''
if ( isNaN( {' ':null} * 1 ) === false) throw ''
if ( isNaN( {'\n\n':null} * 1 ) === false) throw ''
if ( isNaN( {'':undefined} * 1 ) === false) throw ''
if ( isNaN( {'':function(){}} * 1 ) === false) throw ''
//
// x + 0
//
if ( 0 + 0 !== 0) throw ''
if ( .0 + 0 !== 0) throw ''
if ( -0 + 0 !== 0) throw ''
if ( isNaN( NaN + 0 ) === false) throw ''
if ( '' + 0 !== "0") throw ''
if ( ' ' + 0 !== " 0") throw ''
if ( '\n\n' + 0 !== "\n\n0") throw ''
if ( null + 0 !== 0) throw ''
if ( isNaN( undefined + 0 ) === false) throw ''
if ( true + 0 !== 1) throw ''
if ( false + 0 !== 0) throw ''
if ( isNaN( [/ /] + 0 ) === false) throw ''
if ( Infinity + 0 !== +Infinity) throw ''
if ( -Infinity + 0 !== -Infinity) throw ''
if ( isNaN( 'Infinity' + 0 ) === false) throw ''
if ( isNaN( '-Infinity' + 0 ) === false) throw ''
if ( isNaN( function(){} + 0 ) === false) throw ''
if ( [] + 0 !== "0") throw ''
if ( [0] + 0 !== "00") throw ''
if ( [.0] + 0 !== "00") throw ''
if ( [-0] + 0 !== "00") throw ''
if ( isNaN( [NaN] + 0 ) === false) throw ''
if ( [''] + 0 !== "0") throw ''
if ( [' '] + 0 !== " 0") throw ''
if ( ['\n\n'] + 0 !== "\n\n0") throw ''
if ( [null] + 0 !== "0") throw ''
if ( [undefined] + 0 !== "0") throw ''
if ( isNaN( [false] + 0 ) === false) throw ''
if ( isNaN( [true] + 0 ) === false) throw ''
if ( isNaN( [/ /] + 0 ) === false) throw ''
if ( [,] + 0 !== "0") throw ''
if ( [[]] + 0 !== "0") throw ''
if ( isNaN( [Infinity] + 0 ) === false) throw ''
if ( isNaN( [-Infinity] + 0 ) === false) throw ''
if ( isNaN( ['Infinity'] + 0 ) === false) throw ''
if ( isNaN( ['-Infinity'] + 0 ) === false) throw ''
if ( isNaN( [function(){}] + 0 ) === false) throw ''
if ( isNaN( {} + 0 ) === false) throw ''
caughtException = false;
try { Object.create(null) + 0 } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( isNaN( {'':null} + 0 ) === false) throw ''
if ( isNaN( {' ':null} + 0 ) === false) throw ''
if ( isNaN( {'\n\n':null} + 0 ) === false) throw ''
if ( isNaN( {'':undefined} + 0 ) === false) throw ''
if ( isNaN( {'':function(){}} + 0 ) === false) throw ''
//
// (x | 0)
//
if ( (0 | 0) !== 0) throw ''
if ( (.0 | 0) !== 0) throw ''
if ( (-0 | 0) !== 0) throw ''
if ( (NaN | 0) !== 0) throw ''
if ( ('' | 0) !== 0) throw ''
if ( (' ' | 0) !== 0) throw ''
if ( ('\n\n' | 0) !== 0) throw ''
if ( (null | 0) !== 0) throw ''
if ( (undefined | 0) !== 0) throw ''
if ( (true | 0) !== 1) throw ''
if ( (false | 0) !== 0) throw ''
if ( ([/ /] | 0) !== 0) throw ''
if ( (Infinity | 0) !== 0) throw ''
if ( (-Infinity | 0) !== 0) throw ''
if ( ('Infinity' | 0) !== 0) throw ''
if ( ('-Infinity' | 0) !== 0) throw ''
if ( (function(){} | 0) !== 0) throw ''
if ( ([] | 0) !== 0) throw ''
if ( ([0] | 0) !== 0) throw ''
if ( ([.0] | 0) !== 0) throw ''
if ( ([-0] | 0) !== 0) throw ''
if ( ([NaN] | 0) !== 0) throw ''
if ( ([''] | 0) !== 0) throw ''
if ( ([' '] | 0) !== 0) throw ''
if ( (['\n\n'] | 0) !== 0) throw ''
if ( ([null] | 0) !== 0) throw ''
if ( ([undefined] | 0) !== 0) throw ''
if ( ([false] | 0) !== 0) throw ''
if ( ([true] | 0) !== 0) throw ''
if ( ([/ /] | 0) !== 0) throw ''
if ( ([,] | 0) !== 0) throw ''
if ( ([[]] | 0) !== 0) throw ''
if ( ([Infinity] | 0) !== 0) throw ''
if ( ([-Infinity] | 0) !== 0) throw ''
if ( (['Infinity'] | 0) !== 0) throw ''
if ( (['-Infinity'] | 0) !== 0) throw ''
if ( ([function(){}] | 0) !== 0) throw ''
if ( ({} | 0) !== 0) throw ''
caughtException = false;
try { (Object.create(null) | 0) } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( ({'':null} | 0) !== 0) throw ''
if ( ({' ':null} | 0) !== 0) throw ''
if ( ({'\n\n':null} | 0) !== 0) throw ''
if ( ({'':undefined} | 0) !== 0) throw ''
if ( ({'':function(){}} | 0) !== 0) throw ''
//
// ~~x
//
if ( ~~0 !== 0) throw ''
if ( ~~.0 !== 0) throw ''
if ( ~~-0 !== 0) throw ''
if ( ~~NaN !== 0) throw ''
if ( ~~'' !== 0) throw ''
if ( ~~' ' !== 0) throw ''
if ( ~~'\n\n' !== 0) throw ''
if ( ~~null !== 0) throw ''
if ( ~~undefined !== 0) throw ''
if ( ~~true !== 1) throw ''
if ( ~~false !== 0) throw ''
if ( ~~[/ /] !== 0) throw ''
if ( ~~Infinity !== 0) throw ''
if ( ~~-Infinity !== 0) throw ''
if ( ~~'Infinity' !== 0) throw ''
if ( ~~'-Infinity' !== 0) throw ''
if ( ~~function(){} !== 0) throw ''
if ( ~~[] !== 0) throw ''
if ( ~~[0] !== 0) throw ''
if ( ~~[.0] !== 0) throw ''
if ( ~~[-0] !== 0) throw ''
if ( ~~[NaN] !== 0) throw ''
if ( ~~[''] !== 0) throw ''
if ( ~~[' '] !== 0) throw ''
if ( ~~['\n\n'] !== 0) throw ''
if ( ~~[null] !== 0) throw ''
if ( ~~[undefined] !== 0) throw ''
if ( ~~[false] !== 0) throw ''
if ( ~~[true] !== 0) throw ''
if ( ~~[/ /] !== 0) throw ''
if ( ~~[,] !== 0) throw ''
if ( ~~[[]] !== 0) throw ''
if ( ~~[Infinity] !== 0) throw ''
if ( ~~[-Infinity] !== 0) throw ''
if ( ~~['Infinity'] !== 0) throw ''
if ( ~~['-Infinity'] !== 0) throw ''
if ( ~~[function(){}] !== 0) throw ''
if ( ~~{} !== 0) throw ''
caughtException = false;
try { ~~Object.create(null) } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( ~~{'':null} !== 0) throw ''
if ( ~~{' ':null} !== 0) throw ''
if ( ~~{'\n\n':null} !== 0) throw ''
if ( ~~{'':undefined} !== 0) throw ''
if ( ~~{'':function(){}} !== 0) throw ''
//
// x >>> 0
//
if ( 0 >>> 0 !== 0) throw ''
if ( .0 >>> 0 !== 0) throw ''
if ( -0 >>> 0 !== 0) throw ''
if ( NaN >>> 0 !== 0) throw ''
if ( '' >>> 0 !== 0) throw ''
if ( ' ' >>> 0 !== 0) throw ''
if ( '\n\n' >>> 0 !== 0) throw ''
if ( null >>> 0 !== 0) throw ''
if ( undefined >>> 0 !== 0) throw ''
if ( true >>> 0 !== 1) throw ''
if ( false >>> 0 !== 0) throw ''
if ( [/ /] >>> 0 !== 0) throw ''
if ( Infinity >>> 0 !== 0) throw ''
if ( -Infinity >>> 0 !== 0) throw ''
if ( 'Infinity' >>> 0 !== 0) throw ''
if ( '-Infinity' >>> 0 !== 0) throw ''
if ( function(){} >>> 0 !== 0) throw ''
if ( [] >>> 0 !== 0) throw ''
if ( [0] >>> 0 !== 0) throw ''
if ( [.0] >>> 0 !== 0) throw ''
if ( [-0] >>> 0 !== 0) throw ''
if ( [NaN] >>> 0 !== 0) throw ''
if ( [''] >>> 0 !== 0) throw ''
if ( [' '] >>> 0 !== 0) throw ''
if ( ['\n\n'] >>> 0 !== 0) throw ''
if ( [null] >>> 0 !== 0) throw ''
if ( [undefined] >>> 0 !== 0) throw ''
if ( [false] >>> 0 !== 0) throw ''
if ( [true] >>> 0 !== 0) throw ''
if ( [/ /] >>> 0 !== 0) throw ''
if ( [,] >>> 0 !== 0) throw ''
if ( [[]] >>> 0 !== 0) throw ''
if ( [Infinity] >>> 0 !== 0) throw ''
if ( [-Infinity] >>> 0 !== 0) throw ''
if ( ['Infinity'] >>> 0 !== 0) throw ''
if ( ['-Infinity'] >>> 0 !== 0) throw ''
if ( [function(){}] >>> 0 !== 0) throw ''
if ( {} >>> 0 !== 0) throw ''
caughtException = false;
try { Object.create(null) >>> 0 } catch (e) { caughtException = true }
if (caughtException == false) throw ''
if ( {'':null} >>> 0 !== 0) throw ''
if ( {' ':null} >>> 0 !== 0) throw ''
if ( {'\n\n':null} >>> 0 !== 0) throw ''
if ( {'':undefined} >>> 0 !== 0) throw ''
if ( {'':function(){}} >>> 0 !== 0) throw ''
//
// !!x
//
if ( 0 ) throw '' // <<<
if ( .0 ) throw '' // <<<
if ( -0 ) throw '' // <<<
if ( NaN ) throw '' // <<<
if ( '' ) throw '' // <<<
if ( ' ' ) ; else throw '' // <<<
if ( '\n\n' ) ; else throw '' // <<<
if ( null ) throw '' // <<<
if ( undefined ) throw '' // <<<
if ( true ) ; else throw '' // <<<
if ( false ) throw '' // <<<
if ( [/ /] ) ; else throw '' // <<<
if ( Infinity ) ; else throw '' // <<<
if ( -Infinity ) ; else throw '' // <<<
if ( 'Infinity' ) ; else throw '' // <<<
if ( '-Infinity' ) ; else throw '' // <<<
if ( function(){} ) ; else throw '' // <<<
if ( [] ) ; else throw '' // <<<
if ( [0] ) ; else throw '' // <<<
if ( [.0] ) ; else throw '' // <<<
if ( [-0] ) ; else throw '' // <<<
if ( [NaN] ) ; else throw '' // <<<
if ( [''] ) ; else throw '' // <<<
if ( [' '] ) ; else throw '' // <<<
if ( ['\n\n'] ) ; else throw '' // <<<
if ( [null] ) ; else throw '' // <<<
if ( [undefined] ) ; else throw '' // <<<
if ( [false] ) ; else throw '' // <<<
if ( [true] ) ; else throw '' // <<<
if ( [/ /] ) ; else throw '' // <<<
if ( [,] ) ; else throw '' // <<<
if ( [[]] ) ; else throw '' // <<<
if ( [Infinity] ) ; else throw '' // <<<
if ( [-Infinity] ) ; else throw '' // <<<
if ( ['Infinity'] ) ; else throw '' // <<<
if ( ['-Infinity'] ) ; else throw '' // <<<
if ( [function(){}] ) ; else throw '' // <<<
if ( {} ) ; else throw '' // <<<
if ( Object.create(null) ) ; else throw '' // <<<
if ( {'':null} ) ; else throw '' // <<<
if ( {' ':null} ) ; else throw '' // <<<
if ( {'\n\n':null} ) ; else throw '' // <<<
if ( {'':undefined} ) ; else throw '' // <<<
if ( {'':function(){}} ) ; else throw '' // <<<
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment