| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| (function () |
| { |
| function foo() { writeLine("easy, cancel defer"); } |
| foo(); |
| })(); |
| |
| (function () |
| { |
| function foo() { writeLine("easy"); } |
| foo(); |
| }).call(); |
| |
| (function () |
| { |
| var goo = function (str) { writeLine(str); }; |
| function foo() { goo("medium"); } |
| (function () { foo(); }).call(); |
| }).call(); |
| |
| (function () |
| { |
| writeLine((function () |
| { |
| var goo = function () { return "hard"; }; |
| function foo() { return goo(); } |
| return { callFoo: function () { return foo(); } }; |
| }).call().callFoo()); |
| }).apply(this); |
| |
| var x = { data: "OK" }; |
| with (x) |
| { |
| (function outer() |
| { |
| writeLine("outer function: " + data); |
| (function inner() |
| { |
| writeLine("inner function: " + data); |
| })(); |
| })(); |
| } |
| |
| var err = 'global'; |
| try { |
| var f1 = function() { writeLine(err) }; |
| throw 'catch'; |
| } |
| catch(err) { |
| var f2 = function() { writeLine(err) }; |
| try { |
| throw 'catch2'; |
| } |
| catch(err) { |
| var f3 = function() { writeLine(err) }; |
| } |
| } |
| f1(); |
| f2(); |
| f3(); |
| |
| var str = '' + |
| 'x = { get func() { return 1; } };' + |
| 'x = { get "func"() { return 1; } };' + |
| 'x = { get 57() { return 1;} };' + |
| 'x = { get 1e5() { return 1;} };' + |
| 'x = { get func() { return 1;} };'; |
| |
| (function() { |
| // The getters will only be declared in IE9 mode, since |
| // in compat mode the nested eval will pick up the local (empty) string. |
| var str = ''; |
| (0,eval)('eval(str)'); |
| })(); |
| |
| (function (param) { |
| return function() { |
| writeLine(param); |
| }; |
| })('hi there')(); |
| |
| (function() |
| { |
| // Test named function expression with deferred child where the func name is not visible. |
| new function x(x) |
| { |
| function __tmp__() |
| { |
| } |
| eval("\r\n writeLine(x)") |
| } |
| })(); |
| |
| var newfunction = new Function('writeLine("puppies!");'); |
| newfunction(); |
| |
| // Test function with duplicate parameters |
| function dupes(a,b,c,a) {return a} |
| WScript.Echo(dupes(0)); |
| |
| // Helpers |
| |
| function writeLine(str) |
| { |
| WScript.Echo("" + str); |
| } |