我花了一段时间,但我终于弄明白ECMAScript 6中符号的用途是什么:在将属性附加到共享对象时避免名称冲突 - HTML元素例如(如果你遇到同样的问题,我推荐这篇文章. )
但后来我偶然发现了Symbol.for().显然,ECMAScript 6将维护一个全局符号注册表,您可以通过提供符号描述来使用此函数进行查询.再来?如果我使用符号来避免名称冲突,为什么我要使用除我自己之外的代码来使用它们呢?(*)我如何避免全局注册表中的名称冲突?共享符号似乎完全颠覆了这个概念,而全球注册表则更是如此.
(*)是的,我知道符号不是真正的私有,但除此之外.
请看一下这段代码:
$array = array(
'action' => function () { echo "this works"; }
);
class Test {
public $array = array(
"action" => function () { echo "this doesn't"; }
);
}
Run Code Online (Sandbox Code Playgroud)
第一个函数literal解析正常,但第二个 - 类中的一个 - 触发语法错误:
解析错误:语法错误,意外'功能'(T_FUNCTION)...
有人可以向我解释一下吗?这是一个错误吗?
编辑:这是最新的PHP:5.6.6