A sharp variable is a syntax in object initializers that allows serialization of objects that have cyclic references or multiple references to the same object.
#数字に代入することで、他のプロパティをリテラル内で参照できるらすぃ。
let hoge = ({obj: #1={neko: 'cat'}, meow: #1#.neko}); alert(hoge.meow); // 'cat' alert(hoge.obj.neko); // 'cat' // ({obj: {neko: 'cat'}, meow: 'cat'})
使えるパターン
let いらずですね!
(#1=alert, #1#('hoge'));
終わらない旅
let journey = #1={walk: #1#}; journey.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk.walk
参照は続くよどこまでも。
ダメなパターン
通常の変数ってわけではないので2行目でエラーになる。
({obj: #1={neko: 'cat'}, meow: #1#.neko}) ({hoge: #1#})
これも、だめ
(#1=alert, function () (#1#()))()