evalDeferred.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. var s1 =
  6. 'function f1() {' +
  7. ' var a = "a";' +
  8. ' function g1() {' +
  9. ' WScript.Echo(a);' +
  10. ' }' +
  11. ' return g1;' +
  12. '}';
  13. eval(s1);
  14. WScript.Echo('done s1');
  15. var foo1 = f1();
  16. WScript.Echo('done f1');
  17. foo1();
  18. var s2 =
  19. 'var a = "global a";' +
  20. 'function f2(i) {' +
  21. ' with ({a:"with a"}) {' +
  22. ' var g2 = function() {' +
  23. ' WScript.Echo(a);' +
  24. ' };' +
  25. ' function g2_() {' +
  26. ' WScript.Echo(a);' +
  27. ' }' +
  28. ' }' +
  29. ' switch(i) {' +
  30. ' case 0: return g2;' +
  31. ' case 1: return g2_;' +
  32. ' }' +
  33. '}';
  34. eval(s2);
  35. WScript.Echo('done s2');
  36. var foo2 = f2(0);
  37. var foo2_ = f2(1);
  38. WScript.Echo('done f2');
  39. foo2();
  40. foo2_();
  41. var s3 =
  42. 'function f3(i) {' +
  43. ' var a = "f3 a";' +
  44. ' function g3(i) {' +
  45. ' try {' +
  46. ' throw "catch";' +
  47. ' }' +
  48. ' catch(a) {' +
  49. ' function g4_() {' +
  50. ' WScript.Echo(a);' +
  51. ' }' +
  52. ' var g4 = function() {' +
  53. ' WScript.Echo(a);' +
  54. ' };' +
  55. ' return i == 0 ? g4 : g4_;' +
  56. ' }' +
  57. ' }' +
  58. ' return g3(i);' +
  59. '}';
  60. eval(s3);
  61. WScript.Echo('done s3');
  62. var foo3 = f3(0);
  63. var foo3_ = f3(1);
  64. WScript.Echo('done f3');
  65. foo3();
  66. foo3_();