TypeError (undefined): blah is not a function. (In 'blah()', 'blah' is 1) TypeError (undefined): 1 is not a constructor (evaluating 'new blah()') TypeError (undefined): obj.blah is not a function. (In 'obj.blah()', 'obj.blah' is 1) TypeError (undefined): 1 is not a constructor (evaluating 'new obj.blah()') TypeError (undefined): null is not a function. (In 'null()', 'null' is null) TypeError (undefined): null is not a constructor (evaluating 'new null()') TypeError (undefined): 1 is not a function. (In '1()', '1' is 1) TypeError (undefined): 1 is not a constructor (evaluating 'new 1()') TypeError (undefined): f is not a function. (In 'f()', 'f' is 1) TypeError (undefined): obj[0] is not a function. (In 'obj[0]()', 'obj[0]' is null) TypeError (undefined): null is not a constructor (evaluating 'new obj[0]()') TypeError (undefined): obj[1] is not a function. (In 'obj[1]()', 'obj[1]' is 1) TypeError (undefined): 1 is not a constructor (evaluating 'new obj[1]()') TypeError (undefined): null is not an object (evaluating 'n[1]') TypeError (undefined): null is not an object (evaluating 'new n[1]') TypeError (undefined): null is not an object (evaluating 'n.prop') TypeError (undefined): null is not an object (evaluating 'new n.prop') TypeError (undefined): n is not a function. (In 'n()', 'n' is null) TypeError (undefined): null is not a constructor (evaluating 'new n()') --- Test case: implicit global, do delete: false --- safeCall(function(){g0();}); ReferenceError (undefined): Can't find variable: g0 safeCall(function(){g1=undefined;g1();}); TypeError (undefined): g1 is not a function. (In 'g1()', 'g1' is undefined) safeCall(function(){g2=null;g2();}); TypeError (undefined): g2 is not a function. (In 'g2()', 'g2' is null) safeCall(function(){g3=1;g3();}); TypeError (undefined): g3 is not a function. (In 'g3()', 'g3' is 1) safeCall(function(){g4={};g4();}); TypeError (undefined): g4 is not a function. (In 'g4()', 'g4' is an instance of Object) --- Test case: implicit global, do delete: true --- safeCall(function(){g6=undefined;delete g6;g6();}); ReferenceError (undefined): Can't find variable: g6 safeCall(function(){g7=null;delete g7;g7();}); ReferenceError (undefined): Can't find variable: g7 safeCall(function(){g8=1;delete g8;g8();}); ReferenceError (undefined): Can't find variable: g8 safeCall(function(){g9={};delete g9;g9();}); ReferenceError (undefined): Can't find variable: g9 --- Test case: global using window, do delete: false --- Only valid in IE: safeCall(function(){window.g10();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g11=undefined;window.g11();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g12=null;window.g12();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g13=1;window.g13();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g14={};window.g14();}); ReferenceError (undefined): Can't find variable: window --- Test case: global using window, do delete: true --- Only valid in IE: safeCall(function(){window.g16=undefined;delete window.g16;window.g16();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g17=null;delete window.g17;window.g17();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g18=1;delete window.g18;window.g18();}); ReferenceError (undefined): Can't find variable: window Only valid in IE: safeCall(function(){window.g19={};delete window.g19;window.g19();}); ReferenceError (undefined): Can't find variable: window --- Test case: global using this, do delete: false --- INCORRECT in JC all versions: safeCall(function(){this.g20();}); TypeError (undefined): this.g20 is not a function. (In 'this.g20()', 'this.g20' is undefined) safeCall(function(){this.g21=undefined;this.g21();}); TypeError (undefined): this.g21 is not a function. (In 'this.g21()', 'this.g21' is undefined) safeCall(function(){this.g22=null;this.g22();}); TypeError (undefined): this.g22 is not a function. (In 'this.g22()', 'this.g22' is null) safeCall(function(){this.g23=1;this.g23();}); TypeError (undefined): this.g23 is not a function. (In 'this.g23()', 'this.g23' is 1) safeCall(function(){this.g24={};this.g24();}); TypeError (undefined): this.g24 is not a function. (In 'this.g24()', 'this.g24' is an instance of Object) --- Test case: global using this, do delete: true --- INCORRECT in JC all versions: safeCall(function(){this.g26=undefined;delete this.g26;this.g26();}); TypeError (undefined): this.g26 is not a function. (In 'this.g26()', 'this.g26' is undefined) INCORRECT in JC all versions: safeCall(function(){this.g27=null;delete this.g27;this.g27();}); TypeError (undefined): this.g27 is not a function. (In 'this.g27()', 'this.g27' is undefined) INCORRECT in JC all versions: safeCall(function(){this.g28=1;delete this.g28;this.g28();}); TypeError (undefined): this.g28 is not a function. (In 'this.g28()', 'this.g28' is undefined) INCORRECT in JC all versions: safeCall(function(){this.g29={};delete this.g29;this.g29();}); TypeError (undefined): this.g29 is not a function. (In 'this.g29()', 'this.g29' is undefined) --- Test case: local, do delete: false --- safeCall(function(){var v;v();}); TypeError (undefined): v is not a function. (In 'v()', 'v' is undefined) safeCall(function(){var v=undefined;v();}); TypeError (undefined): v is not a function. (In 'v()', 'v' is undefined) safeCall(function(){var v=null;v();}); TypeError (undefined): v is not a function. (In 'v()', 'v' is null) safeCall(function(){var v=1;v();}); TypeError (undefined): v is not a function. (In 'v()', 'v' is 1) safeCall(function(){var v={};v();}); TypeError (undefined): v is not a function. (In 'v()', 'v' is an instance of Object) --- Test case: object, do delete: false --- safeCall(function(){var o={};o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined) safeCall(function(){var o={p:undefined};o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined) safeCall(function(){var o={p:null};o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is null) safeCall(function(){var o={p:1};o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is 1) safeCall(function(){var o={p:{}};o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is an instance of Object) --- Test case: object, do delete: true --- safeCall(function(){var o={p:undefined};delete o.p;o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined) safeCall(function(){var o={p:null};delete o.p;o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined) safeCall(function(){var o={p:1};delete o.p;o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined) safeCall(function(){var o={p:{}};delete o.p;o.p();}); TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined) --- Test case: array initialized, do delete: false --- safeCall(function(){var a=[];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) INCORRECT in compat modes: safeCall(function(){var a=[undefined];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[null];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is null) safeCall(function(){var a=[1];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is 1) safeCall(function(){var a=[{}];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is an instance of Object) --- Test case: array initialized, do delete: true --- safeCall(function(){var a=[undefined];delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[null];delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[1];delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[{}];delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) --- Test case: array assigned, do delete: false --- safeCall(function(){var a=[];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[];a[0]=undefined;a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[];a[0]=null;a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is null) safeCall(function(){var a=[];a[0]=1;a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is 1) safeCall(function(){var a=[];a[0]={};a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is an instance of Object) --- Test case: array assigned, do delete: true --- safeCall(function(){var a=[];a[0]=undefined;delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[];a[0]=null;delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[];a[0]=1;delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined) safeCall(function(){var a=[];a[0]={};delete a[0];a[0]();}); TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)