|
> このようにやっても動きます。なぜでしょうか? なぜ、と言われると、それができるように設計したからとしか言えないと思いますが…。 文法解析的には、変数の識別子を$開始と決めたために、メンバ名と識別できるから、その記述を認めても問題なくなった、とか。
> 他の言語だと動かないと思うのですが 動的言語では似たような記述が可能なのもそれなりにあるんじゃないでしょうか? 例えばJavaScriptだと、以下のような記述が可能です。
let obj = { prop: 'ok', name: 'ng' }; let name = 'prop'; console.log(obj[name]); // okが出力される
// obj.name だとnameがobjのメンバなのか変数なのか区別できないので // . 演算子の右辺で変数を使うことはできない
|