//------------------------------------------------------------------------------------------------------- // Copyright (C) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- function write(args) { WScript.Echo(args); } var scenario= 1; function InitScenario() { write("Scenario " + scenario++); } var e = "I am alive"; InitScenario(); //1 try { throw "abc"; } catch(e) { write(e); } write(e); InitScenario();//2 try { throw "abc"; } catch(e) { e = 20; write(e); } write(e); InitScenario();//3 var a = new Object(); a.e = "I am inside with"; with(a) { try { throw "abc"; } catch(e) { e = 20; write(e); } write(e); } write(e); InitScenario();//4 try { throw "abc"; } catch(e) { var a = new Object(); a.e = "I am inside with"; with(a) { write(e); } write(e); } write(e); InitScenario();//5 try { throw "abc"; } catch(e) { var a = 10; } write(a); InitScenario();//6 try { throw "abc"; } catch(e) { var a = function () { return "hello world";}; } write(a()); InitScenario();//7 try { throw "abc"; } catch(e) { eval("a = function () { return 'hello world';};"); } write(a()); InitScenario();//8 try { throw "abc"; } catch(e) { c = 30; } write(c); InitScenario();//9 var foo = function () { try { throw "abc"; } catch(e) { write(e); } write(e); } foo(); InitScenario();//10 foo = function () { try { throw "abc"; } catch(e) { e = 20; write(e); } write(e); } foo(); InitScenario();//11 foo = function () { var a = new Object(); a.e = "I am inside with"; with(a) { try { throw "abc"; } catch(e) { e = 20; write(e); } write(e); } write(e); } foo(); InitScenario();//12 foo = function () { try { throw "abc"; } catch(e) { var a = new Object(); a.e = "I am inside with"; with(a) { write(e); } write(e); } write(e); } InitScenario();//13 foo = function () { try { throw "abc"; } catch(e) { var a = 10; } write(a); } foo(); InitScenario();//14 foo = function () { try { throw "abc"; } catch(e) { var a = function () { return "hello world";}; } write(a()); } foo(); InitScenario();//15 foo = function () { try { throw "abc"; } catch(e) { eval("a = function () { return 'hello world';};"); } write(a()); } foo(); InitScenario();//16 foo = function () { try { throw "abc"; } catch(e) { c = 30; } write(c); } foo(); InitScenario();//17 foo = function () { var test = 'pass'; try { throw 'fail'; } catch (test) { test += 'ing'; } write(test); } foo(); //raise bug for this eval scenario InitScenario(); try { throw "abc"; } catch(e) { eval("a = 10;"); } write(a); InitScenario(); foo = function () { try { throw "abc"; } catch(e) { eval("a = 19;"); } write(a); } foo();