| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function Execute(str)
- {
- try {
- eval(str);
- }
- catch (e) {
- WScript.Echo(e);
- }
- }
- // Keywords that are reserved cannot be used as identifiers. Examples: var, with, false
- // Other keywords are not reserved, and can be used as identifiers. Examples: double, byte
- // regular identifier, referenced later with unicode variant
- Execute("var hello=10; WScript.Echo(hello); WScript.Echo(h\\u0065llo);");
- // identifier with unicode variant. Used with and without unicode
- Execute("var h\u0065llo=20; WScript.Echo(hello); WScript.Echo(h\\u0065llo);");
- // undefined identifier with unicode. Should throw a reference error
- Execute("WScript.Echo(h\\u0065llo2);");
- // Valid use of some reserved keywords in expressions, like FALSE
- // Invalid as of ES6 Draft 22
- Execute("WScript.Echo(fals\\u0065);");
- Execute("var a = fals\\u0065; WScript.Echo(a);");
- Execute("var b = tru\\u0065; WScript.Echo(b);");
- // Invalid use of a reserved keyword in an expression. Should throw a syntax error
- Execute("var c = var;");
- Execute("var c = v\\u0061r;");
- Execute("var c = else;");
- Execute("var c = els\\u0065;");
- // Reserved keyword declared as a var. Should throw an error indicating use of keyword as an identifier
- Execute("var false=30; WScript.Echo(false); WScript.Echo(fals\\u0065);");
- Execute("var var=30; WScript.Echo(var); WScript.Echo(v\\u0061r);");
- Execute("var fals\\u0065=40; WScript.Echo(false); WScript.Echo(fals\\u0065);");
- Execute("var v\\u0061r=30; WScript.Echo(var); WScript.Echo(v\\u0061r);");
- // Use a reserved keyword as a property, legal
- Execute("var x1={};x1.else = 10;WScript.Echo(x1.else);");
- Execute("var x2={};x2.els\\u0065 = 10;WScript.Echo(x2.els\\u0065);");
- // Use an unreserved keyword as a property, legal
- Execute("var x1={};x1.double = 10;WScript.Echo(x1.double);");
- Execute("var x2={};x2.doubl\\u0065 = 10;WScript.Echo(x2.doubl\\u0065);");
- // Use a reserved keyword as a function name, not legal
- Execute("function else() {};");
- Execute("function els\\u0065() {};");
- // Use an unreserved keyword as a function name, legal
- Execute("function double() {};");
- Execute("function doubl\\u0065() {};");
|