| //------------------------------------------------------------------------------------------------------- | |
| // 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); | |
| } |