在我使用OpalRB (编译器)的一个项目中,我想知道一些事情:当您在Opal中创建常量时,如下所示:
ONE = 1..。这本质上和说这是JavaScript一样吗?:
const ONE = 1;我问这个问题的原因是,JS中的const关键字在每个浏览器中并不总是得到适当的支持,因此,我对在Opal中使用常量有些谨慎。
发布于 2014-09-07 22:29:06
..。这和说这是JavaScript本质上是一样的吗?
不不是的。const in JavaScript使变量忽略任何重分配,并保留其原始值。在Ruby中,常量在重新分配时会发出警告,但实际上得到了重新分配。
下面是Opal编译Ruby中的ONE=1的方式:
$opal.cdecl($scope, 'ONE', 1);正如您所看到的,常量不是像局部变量那样作为变量存储的,而是在作用域对象内部存储的。
如果已经声明了cdecl,那么ONE函数可以做它想做的任何事情。然而,Opal的开发人员似乎选择在重新分配常量时不显示警告。尝试这 (使用这个网页并查看编译器是如何工作的总是很有趣的)。
因此,Opal编译的Ruby中的常量不是。
https://stackoverflow.com/questions/25714871
复制相似问题