gpt4 book ai didi

ecmascript-6 - 我应该在 ECMAScript 2015 中的常量上使用 Object.freeze 吗?

转载 作者:行者123 更新时间:2023-12-01 02:07:48 28 4
gpt4 key购买 nike

尽管事实是const不能在 ECMAScript 2015 中赋值,如果对象没有被卡住,可以修改 Object.freeze .

const应该是不可变的,添加 Object.freeze 有意义吗?卡住对象?
大多数用例在声明后不需要修改内容。我想到的一个异常(exception)是分配一个 classconst (例如 const MyClass = class MyClass {} ),在这种情况下,属性需要是可更改的(至少对于大多数用途)。

我不是在谈论是否应该更改 ECMAScript 2015;我想知道我是否应该使用 Object.freezeconst s 在日常代码中。

例子

const firstNames = ['John', 'Daisy'];

firstNames = [] // Fails silently
firstNames // => ['John', 'Daisy']

firstNames[0] = 'Replaced!'; // No error and it works!
firstNames // => ['Replaced!', 'Daisy']

示例与 Object.freeze
const firstNames = Object.freeze(['John', 'Daisy']);

firstNames = [] // Throws an error
firstNames // => ['John', 'Daisy']

firstNames[0] = 'Replaced!'; // No error and it works!
firstNames // => ['Replaced!', 'Daisy']

最佳答案

Should I use Object.freeze for consts in everyday code?



,我认为这将是一个很好的做法。它确实为您提供了与 const 相同的优势- 失败而不是继续(当然是在严格模式下)。它也是一种更具声明性的代码风格,清楚地说明了不应该改变对象的意图。

然而,iirc 卡住的对象仍然比普通对象慢一点。如果您有真正对性能至关重要的代码,则必须知道这一点。它不应该阻止您使用 Object.freeze一般来说,虽然1。

但是,您不应该依赖访问卡住对象时抛出的异常。您可能必须将代码转换为不支持卡住的 ES3。

1) 每天使用它的人越多,引擎优化它的速度就越快——我早就应该这样做了 :-)

关于ecmascript-6 - 我应该在 ECMAScript 2015 中的常量上使用 Object.freeze 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205975/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com