Here, cant we use "^" instead of "#", I dont think it will conflict with existing "bit xor" operator. Like:- function Outer() { var x = "outer"; function Inner() { var x = "inner"; log(x); // "inner" log(^x); // "outer" log(^^x); // global scope, probably unbound var save_outer_x = ^x; ^^x = "new global value" ; } }