blob: 686cc769e4d58380b4abdbdceb3e23b817ac68a8 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// 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);
}