1

OpalRB (Ruby-to-JavaScript コンパイラー) を使用した私のプロジェクトで何か疑問に思っています: Opal で定数を作成すると、次のようになります。

ONE = 1

...それは本質的に、これが JavaScript であると言っているのと同じことですか?:

const ONE = 1;

私がこの質問をする理由はconst、JS のキーワードが各ブラウザーで常に適切にサポートされているとは限らないためです。そのため、Opal で定数を使用することには多少の注意を払っています。

4

1 に答える 1

1

...それは本質的に、これが JavaScript であると言っているのと同じことですか?

いいえ、ちがいます。constJavaScript では、再割り当てを無視して元の値を保持する変数を作成します。Ruby では、定数が再割り当てされると警告が表示されますが、実際には再割り当てされます。

ONE=1Ruby で Opal によってコンパイルされる方法 は次のとおりです。

$opal.cdecl($scope, 'ONE', 1);

ご覧のとおり、定数はローカル変数のように変数として保存されるのではなく、スコープ オブジェクト内に内部的に保存されます。

がすでに宣言されている場合、cdecl関数は何でも実行できます。ONEただし、Opal の開発者は、定数が再割り当てされたときに警告を表示しないことを選択したようです。これを試してみてください(この Web ページをいじって、コンパイラがどのように機能するかを確認するのはいつでも楽しいことです)。

したがって、Opal でコンパイルされた Ruby の定数はそうではありません。

于 2014-09-07T22:29:06.813 に答える