michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: /** michael@0: File Name: 12.2-1.js michael@0: ECMA Section: The variable statement michael@0: Description: michael@0: michael@0: If the variable statement occurs inside a FunctionDeclaration, the michael@0: variables are defined with function-local scope in that function, as michael@0: described in section 10.1.3. Otherwise, they are defined with global michael@0: scope, that is, they are created as members of the global object, as michael@0: described in section 0. Variables are created when the execution scope michael@0: is entered. A Block does not define a new execution scope. Only Program and michael@0: FunctionDeclaration produce a new scope. Variables are initialized to the michael@0: undefined value when created. A variable with an Initializer is assigned michael@0: the value of its AssignmentExpression when the VariableStatement is executed, michael@0: not when the variable is created. michael@0: michael@0: Author: christine@netscape.com michael@0: Date: 12 november 1997 michael@0: */ michael@0: michael@0: var SECTION = "12.2-1"; michael@0: var VERSION = "ECMA_1"; michael@0: startTest(); michael@0: var TITLE = "The variable statement"; michael@0: michael@0: writeHeaderToLog( SECTION +" "+ TITLE); michael@0: michael@0: new TestCase( "SECTION", michael@0: "var x = 3; function f() { var a = x; var x = 23; return a; }; f()", michael@0: void 0, michael@0: eval("var x = 3; function f() { var a = x; var x = 23; return a; }; f()") ); michael@0: michael@0: test(); michael@0: