符号与数字文字的性能?

Raf*_*ael 1 javascript

我一直在使用对象文字作为穷人的枚举,如下所示:

let enum = {
    option1: Symbol("o1"),
    option2: Symbol("o2"),
    option3: Symbol("o3")
};

let item = enum.option2;

if(item === enum.option2) { console.log("Item is Option 2!") }
Run Code Online (Sandbox Code Playgroud)

我使用Symbol是因为我认为它比使用数字更具有语义意义——在这种情况下,我并不真正关心“枚举”携带的值,我只想检查相等性——但我有点担心这样做的性能考虑就这样。如果我继续使用符号代替整数,我是否会给处理器带来更大的压力?

Ber*_*rgi 6

不,符号就像数字一样是原始值,应该同样快速地进行比较。唯一的缺点可能是您必须使用变量来引用它们而不是受信任的文字,但是如果您的变量被const分配并且从未被分配,优化编译器也应该能够内联符号值。

无论如何,您绝对应该使用语义上更有意义的内容,并帮助您提高开发性能。执行速度是次要的,这里的差异可以忽略不计。