| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function write(v) { WScript.Echo(v + ""); }
- var r;
- // Delete locals
- (function Test1() {
- var p;
- var q = 10;
- write("p : " + p);
- r = delete p;
- write("delete p: " + r);
- write("p : " + p);
- write("q : " + q);
- r = delete q;
- write("delete q: " + r);
- write("q : " + q);
- }) ();
- test2_value = 10;
- // Delete globals
- (function Test2() {
- test2_local = 20;
- write("test2_value : " + test2_value);
- r = delete test2_value;
- write("delete test2_value: " + r);
- try {
- write("test2_value : " + test2_value);
- write("delete test2_value failed");
- } catch (e) {
- write("delete test2_value passed");
- }
- write("test2_local : " + test2_local);
- r = delete test2_local;
- write("delete test2_local: " + r);
- try {
- write("test2_local : " + test2_local);
- write("delete test2_local failed");
- } catch (e) {
- write("delete test2_local passed");
- }
- }) ();
- // Deleting parameters
- (function Test3(x,y,z) {
- write("Test3 x : " + x + " y: " + y + " z: " + z);
- r = delete x;
- write("delete x: " + r);
- r = delete y;
- write("delete x: " + r);
- r = delete z;
- write("delete x: " + r);
- write("Test3 x : " + x + " y: " + y + " z: " + z);
- })(10, "hello");
- // Delete arguments[i]
- (function Test4(x,y,z) {
- write("Test4 x : " + x + " y: " + y + " z: " + z);
- write("Test4 arguments[0] : " + arguments[0] + " arguments[1]: " + arguments[1] + " arguments[2]: " + arguments[2]);
- r = delete arguments[0];
- write("delete arguments[0]: " + r);
- r = delete arguments[2];
- write("delete arguments[2]: " + r);
- write("Test4 x : " + x + " y: " + y + " z: " + z);
- write("Test4 arguments[0] : " + arguments[0] + " arguments[1]: " + arguments[1] + " arguments[2]: " + arguments[2]);
- }) (10, "hello");
- // Delete nested function
- (function Test5() {
- function test5_func() { return 100;}
- r = delete test5_func;
- write("Test5: delete function " + r);
- write("test5_func() :" + test5_func());
- }) ();
- // Delete this
- (function Test6() {
- try {
- r = delete this;
- } catch (e) {
- write("Exception delete this : " + e.message);
- }
- write("Test6: delete this: " + r);
- }) ();
- // Delete a global function
- function test7_value() {}
- (function Test7() {
- r = delete test7_value;
- write("Test7: delete test7_value: " + r);
- }) ();
- // Delete arguments
- (function Test8() {
- r = delete arguments;
- write("Test8: delete arguments: " + r);
- }) ();
- // Delete exception
- (function Test9() {
- try {
- throw 10;
- } catch(e) {
- r = delete e;
- }
- write("Test9: delete exception: " + r);
- })();
- // Delete exception
- (function Test10() {
- try {
- throw new Error("some error");
- } catch(e) {
- r = delete e;
- }
- write("Test10: delete exception: " + r);
- })();
- // Delete variable declared using eval
- (function Test11(){
- eval("var x = 10;");
- r = delete x;
- write("Test11: delete x: " + r);
- }) ();
- // Delete variable declared using eval, in eval
- (function Test12(){
- eval("var x = 10;");
- r = eval("delete x");
- write("Test12: delete x: " + r);
- }) ();
- // Delete variable in eval
- (function Test13(){
- var x;
- r = eval("delete x;");
- write("Test13: delete x: " + r);
- }) ();
- // Delete function in eval
- (function Test14(){
- function f() { return 100;}
- r = eval("delete f;");
- write("Test14: delete f: " + r);
- }) ();
- // Delete function in eval, declared in eval
- (function Test15(){
- eval("function f() { return 100;}");
- r = eval("delete f;");
- write("Test15: delete f: " + r);
- }) ();
- // Delete function, declared in eval
- (function Test16(){
- eval("function f() { return 100;}");
- r = delete f;
- write("Test16: delete f: " + r);
- }) ();
- // Delete arguments in function declared and called in eval
- (function Test17(){
- r = eval("function test17_value(){ return delete arguments; }; test17_value();");
- write("Test17: delete test17_value: " + r);
- }) ();
- // With cases
- // Delete local variable, not in with
- (function Test18(){
- var test18_value = 10;
- var o = {};
- with(o){
- r = delete test18_value;
- }
- write("Test18: delete test18_value: " + r);
- write("test18_value : " + test18_value);
- }) ();
- // Delete variable in with
- (function Test19(){
- var test19_value = 10;
- var o = { test19_value : 20 };
- with(o){
- r = delete test19_value;
- }
- write("Test19: delete test19_value: " + r);
- write("test19_value : " + test19_value);
- write("o.test19_value : " + o.test19_value);
- }) ();
- // Delete local variable, not in with inside eval
- (function Test20(){
- var test20_value = 10;
- var o = {};
- with(o){
- r = eval("delete test20_value");
- }
- write("Test20: delete test20_value: " + r);
- write("test20_value : " + test20_value);
- }) ();
- // Delete variable in with, inside eval
- (function Test21(){
- var test21_value = 10;
- var o = { test21_value : 20 };
- with(o){
- r = eval("delete test21_value");
- }
- write("Test21: delete test21_value: " + r);
- write("test21_value : " + test21_value);
- write("o.test21_value : " + o.test21_value);
- }) ();
- // Delete variable in multi level with!!!
- (function Test22(){
- var test22_value = 10;
- var o1 = { test22_value : 20 };
- var o2 = { test22_value : 30 };
- var o3 = { test22_value : 40 };
- var o4 = { test22_value : 50 };
- with(o1){
- with(o2){
- with(o3){
- with(o4){
- r = delete test22_value;
- }
- }
- }
- }
- write("Test22: delete test22_value: " + r);
- write("test22_value : " + test22_value);
- write("o1.test22_value : " + o1.test22_value);
- write("o2.test22_value : " + o2.test22_value);
- write("o3.test22_value : " + o3.test22_value);
- write("o4.test22_value : " + o4.test22_value);
- }) ();
- (function Test23(){
- var test23_value = 10;
- var o1 = { test23_value : 20 };
- var o2 = { test23_value : 30 };
- var o3 = { test23_value : 40 };
- var o4 = { test23_value : 50 };
- with(o1){
- with(o2){
- with(o3){
- with(o4){
- r = eval("delete test23_value");
- }
- }
- }
- }
- write("Test23: delete test23_value: " + r);
- write("test23_value : " + test23_value);
- write("o1.test23_value : " + o1.test23_value);
- write("o2.test23_value : " + o2.test23_value);
- write("o3.test23_value : " + o3.test23_value);
- write("o4.test23_value : " + o4.test23_value);
- }) ();
- var Test24_value = 1;
- (function Test24(){
- var Test24_value = 10;
- var o = { Test24_value : 20 };
- with(o){
- r = delete Test24_value;
- }
- write("Test24: delete Test24_value: " + r);
- write("Test24_value : " + Test24_value);
- write("o.Test24_value : " + o.Test24_value);
- }) ();
- var Test25_value = 1;
- (function Test25(){
- var o = { Test25_value : 20 };
- with(o){
- r = eval("delete Test25_value");
- }
- write("Test25: delete Test25_value: " + r);
- write("Test25_value : " + Test25_value);
- write("o.Test25_value : " + o.Test25_value);
- }) ();
- var Test26_value = 1;
- (function Test26(){
- var o = new Object();
- with(o){
- r = delete Test26_value;
- }
- write("Test26: delete Test26_value: " + r);
- write("Test26_value : " + Test26_value);
- write("o.Test26_value : " + o.Test26_value);
- }) ();
- var Test27_value = 1;
- (function Test27(){
- var o = new Object();
- with(o){
- r = delete Test27_value;
- }
- write("Test27: delete Test27_value: " + r);
- write("Test27_value : " + Test27_value);
- write("o.Test27_value : " + o.Test27_value);
- }) ();
- // Function Declaration. And eval with same name
- function Func28()
- {
- write("Func28.1 :" + typeof(Func28));
- eval("var Func28 = 1;");
- write("Func28.2 :" + typeof(Func28));
- r = delete Func28;
- write("Func28: delete Func28: " + r);
- write("Func28.3 :" + typeof(Func28));
- eval("var Func28 = 1;");
- write("Func28.4 :" + typeof(Func28));
- eval("r = delete Func28;");
- write("Func28: delete Func28: " + r);
- write("Func28.5 :" + typeof(Func28));
- }
- Func28();
- (function Expr29()
- {
- write("Expr29.1 :" + typeof(Expr29));
- eval("var Expr29 = 1;");
- write("Expr29.2 :" + typeof(Expr29));
- r = delete Expr29;
- write("Expr29: delete Expr29: " + r);
- write("Expr29.3 :" + typeof(Expr29));
- eval("var Expr29 = 1;");
- write("Expr29.4 :" + typeof(Expr29));
- eval("r = delete Expr29;");
- write("Expr29: delete Expr29: " + r);
- write("Expr29.5 :" + typeof(Expr29));
- })()
- function Func30()
- {
- write("Func30.1 :" + typeof(Func30));
- eval("var Func30 = 1;");
- eval('write("Func30.2 :" + typeof(Func30));');
- eval('eval("var Func30 = {};");');
- eval('write("Func30.3 :" + typeof(Func30));');
- var str = '(function Func30_inner() {' +
- ' write("Func30.4 :" + typeof(Func30));' +
- ' r = delete Func30; ' +
- ' write("Func30: delete Func30: " + r);' +
- ' write("Func30.5 :" + typeof(Func30));' +
- ' r = delete Func30; ' +
- ' write("Func30: delete Func30: " + r);' +
- ' write("Func30.6 :" + typeof(Func30));' +
- '})();';
- eval(str);
- write("Func30.7 :" + typeof(Func30));
- }
- Func30();
- (function Expr31()
- {
- write("Expr31.1 :" + typeof(Expr31));
- eval("var Expr31 = 1;");
- eval('write("Expr31.2 :" + typeof(Expr31));');
- eval('eval("var Expr31 = {};");');
- eval('write("Expr31.3 :" + typeof(Expr31));');
- var str = '(function Expr31_inner() {' +
- ' write("Expr31.4 :" + typeof(Expr31));' +
- ' r = delete Expr31; ' +
- ' write("Expr31: delete Expr31: " + r);' +
- ' write("Expr31.5 :" + typeof(Expr31));' +
- ' r = delete Expr31; ' +
- ' write("Expr31: delete Expr31: " + r);' +
- ' write("Expr31.6 :" + typeof(Expr31));' +
- '})();';
- eval(str);
- write("Expr31.7 :" + typeof(Expr31));
- })()
|