OpalRB中的常量

时间:2014-09-07 21:17:48

标签: javascript ruby opalrb

我想知道OpalRB(Ruby-to-JavaScript编译器)在我的项目中的某些事情:当你在Opal中制作一个常量时,就像这样:

ONE = 1

...与说这是JavaScript基本上是一回事吗?:

const ONE = 1;

我问这个问题的原因是JS中的const关键字并不总是在每个浏览器中得到适当的支持,因此,我对使用Opal的常量有些警惕。

1 个答案:

答案 0 :(得分:1)

  

...与说这是JavaScript基本相同吗?

不,不是。 JavaScript中的const生成一个忽略任何重新分配并保持其原始值的变量。在Ruby中,常量在重新分配时会发出警告,但实际上会重新分配。

以下是Ruby中ONE=1如何通过Opal编译:

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

正如您所看到的,常量不是以局部变量的方式存储为变量,而是存储在范围对象内部。

如果已声明cdeclONE函数可以执行任何操作。然而,Opal的开发人员似乎选择在重新分配常量时不显示警告。试试this(玩这个网页总是很有趣,看看编译器是如何工作的。)

因此,Opal编译的Ruby中的常量不是。