2016-03-30 6 views
2

不変なオブジェクトだった場合、constとして宣言することに疑いはありません。 しかし、この場合は、コードの後半でオブジェクトが変更されている間は、オブジェクトへのconst参照に過ぎません。ES2015では、可変配列/オブジェクトをconstとして宣言すべきですか?

const styles = {}; 
... 
styles.width = rect.width + 'px'; 

このコードを読んでいる開発者にとっては混乱します。 letは、変更されたオブジェクトの方が適切です。

+0

あなたはちょうどあなたの質問にお答えしましたか? – llamerr

+1

私は変数が常に同じオブジェクトを参照するので、この目的のために 'const'を好む。しかし、それがあなたのコードなら、あなたが好むものを使ってください。あなたがチームで働いていて、彼らが混乱するかもしれないと心配しているなら、チームのためのコーディング標準文書を書く:問題解決。 – nnnnnn

答えて

2

これは非常に意見に基づいているため、最終的な回答を得ることはできないでしょう。

歴史的背景を少しは混乱constが最初の場所にあるようになったのか理解するのに役立ちます。わずかに異なる(そしておそらくより良い)、宇宙、ECMAScriptので

Allan Wirfs-Brock, the former editor of the EcmaScript spec, himself said:

const宣言はletと命名され、SSAバインディングが導入されます。

そして、これは、he respondedケースはなかった理由を尋ねた:

LET/constがTC39が真剣に選択肢を命名探検決してES4の提案とMOZ JS1.7

から持ち越さ

だから、それはそれに慣れていない人は、それが何を期待するかもしれない何をしないためconstは、誤った名称のビットであると言えるでしょう。 const以来

はそれがないとほぼ確実に、私はまだconstであなたのオブジェクトを定義し、変更するつもりはないように動作します。

constの方がよく理解できない人には、これは役に立ちます。

多分それはの線に沿って、対象物とのconstの最初の発生時にコメントを追加するのに役立つ可能性があり:

// Important: 'const' only ensures that 'styles' always references the same object, 
// it does not render it immutable 
const styles = {}; 

意見がが異なる場合があります。

+0

オピニオンベースの(トピック以外の)質問は、回答を促すべきではありません。 –

+0

私の悪い、何をお勧めしますか?質問を閉じる? – nils

関連する問題