Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ES6符号作为唯一ID是否是一种良好的做法?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 使用ES6符号作为唯一ID是否是一种良好的做法?

Javascript 使用ES6符号作为唯一ID是否是一种良好的做法?,javascript,ecmascript-6,Javascript,Ecmascript 6,由于Symbol是唯一且不可变的数据类型,因此Symbol的常见用例是对象属性。但是,将其用作唯一id是否是一种良好的做法?例如: const list = [ {id: Symbol()}, {id: Symbol()} ] 这完全取决于你的需要。如果您只需要它们作为您自己的代码库中的标识符,那么它们很好,当然比生成随机ID要好 但是使用Symbol()的一个主要缺点是它们不可序列化。没有办法跨网络/进程共享Sy

由于
Symbol
是唯一且不可变的数据类型,因此
Symbol
的常见用例是对象属性。但是,将其用作唯一id是否是一种良好的做法?例如:

        const list = [
            {id: Symbol()},
            {id: Symbol()}
        ]

这完全取决于你的需要。如果您只需要它们作为您自己的代码库中的标识符,那么它们很好,当然比生成随机ID要好

但是使用
Symbol()
的一个主要缺点是它们不可序列化。没有办法跨网络/进程共享
Symbol()
的值或将其保存到磁盘/数据库


在大多数情况下,可能最好使用自动递增ID。

这并不是它们的真正用途,您可以使用任何对象<代码>{}!={}@lyschooning
{}!={}
如果我们想维护一个不可变的对象,它将不起作用。@ChingTingWu:对象标识是不可变的。如果希望对象本身是不可变的,仍然可以冻结它们。