mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 03:34:08 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2009 the Sputnik authors.  All rights reserved.
 | |
| // This code is governed by the BSD license found in the LICENSE file.
 | |
| 
 | |
| /*---
 | |
| info: |
 | |
|     Variables are created when the program is entered. Variables are initialised to "undefined"
 | |
|     when created. A variable with an Initialiser is assigned the value of its AssignmentExpression when the
 | |
|     VariableStatement is executed, not when the variable is created
 | |
| es5id: 12.2_A1
 | |
| description: Creating variables after entering the execution scope
 | |
| ---*/
 | |
| 
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| //CHECK#1
 | |
| try {
 | |
| 	__x = __x;
 | |
|     __y = __x ? "good fellow" : "liar"; // __y assigned to "liar" since __x undefined
 | |
|     __z = __z === __x ? 1 : 0; // __z assigned to 1 since both __x and __z are undefined
 | |
| } catch (e) {
 | |
| 	throw new Test262Error('#1: Using declarated variable before it declaration is admitted');
 | |
| }
 | |
| //
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| //CHECK#2
 | |
| assert.throws(ReferenceError, function() {
 | |
|     __something__undefined = __something__undefined;
 | |
| });
 | |
| //
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| //CHECK#3
 | |
| if ((__y !== "liar")&(__z !== 1)) {
 | |
| 	throw new Test262Error('#3: (__y === "liar") and (__z === 1). Actual:  __y ==='+__y+' and __z ==='+__z  );
 | |
| }
 | |
| //
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| var __x, __y = true, __z = __y ? "smeagol" : "golum";
 | |
| 
 | |
| //////////////////////////////////////////////////////////////////////////////
 | |
| //CHECK#4
 | |
| if (!__y&!(__z = "smeagol")) {
 | |
| 	throw new Test262Error('#4: A variable with an Initialiser is assigned the value of its AssignmentExpression when the VariableStatement is executed');
 | |
| }
 | |
| //
 | |
| //////////////////////////////////////////////////////////////////////////////
 |