| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function print(x) { WScript.Echo(x+""); }
- var inFunctionTests =
- [
- // eval gets scope for let/const variables => they do not leak out, no redeclaration error with vars
- function () {
- var x = 1;
- eval("let x = 2;");
- print(x);
- },
- function () {
- var x = 1;
- eval("const x = 2;");
- print(x);
- },
- function () {
- eval("let x = 2;");
- var x = 1;
- print(x);
- },
- function () {
- eval("const x = 2;");
- var x = 1;
- print(x);
- },
- // var leaks out of eval in non-strict mode => redeclaration error with let/consts
- function () {
- let x = 1;
- eval("var x = 2;");
- print(x);
- },
- function () {
- const x = 1;
- eval("var x = 2;");
- print(x);
- },
- function () {
- eval("var x = 2;");
- let x = 1;
- print(x);
- },
- function () {
- eval("var x = 2;");
- const x = 1;
- print(x);
- },
- ];
- for (let i = 0; i < inFunctionTests.length; i++)
- {
- try {
- inFunctionTests[i]();
- } catch (e) {
- print(e);
- }
- }
- // global tests
- // eval gets scope for let/const variables => they do not leak out, no redeclaration error with vars
- var a = 1;
- eval("let a = 2;");
- print(a);
- var b = 1;
- eval("const b = 2;");
- print(b);
- eval("let c = 2;");
- var c = 1;
- print(c);
- eval("const d = 2;");
- var d = 1;
- print(d);
- // var leaks out of eval in non-strict mode => redeclaration error with let/consts
- let e = 1;
- try { eval("var e = 2;"); print(e); } catch (e) { print(e); }
- const f = 1;
- try { eval("var f = 2;"); print(f); } catch (e) { print(e); }
- var hadException = false;
- try { eval("var g = 2;"); } catch (e) { print(e); hadException = true; }
- let g = 1;
- if (!hadException) print(g);
- hadException = false;
- try { eval("var h = 2;"); } catch (e) { print(e); hadException = true; }
- const h = 1;
- if (!hadException) print(h);
|