ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのconstとObject.freeze()の違い

JavaScriptのconstとObject.freeze()の違い

青灯夜游
青灯夜游転載
2020-11-23 17:40:033128ブラウズ

JavaScriptのconstとObject.freeze()の違い

この記事では、constObject.freeze() を使用して JS で定数と構成値を定義する方法をいくつか紹介します。 、およびそれらの違い。

JS アプリケーションで定数や設定値を定義するとき。これらは次の特性を持つ必要があります:

  • アプリケーション間でアクセス可能
  • 変数の値は不変である必要があります
  • 変数への参照は不変である必要があります

次に、上記 3 つの機能を 1 つずつ見てみましょう。

let の使用

変数を定義するには let を使用します。

let APP_NAME = "前端小智@大迁世界"

function getApplicationName() {
   APP_NAME = "他是谁?"
   return APP_NAME
}

getApplicationName() // "他是谁?"

上記の例では、関数 getApplicationName()APP_NAME の値を変更します。グローバル変数が変更されないようにするにはどうすればよいでしょうか?

constを使用する

constを使用してグローバル変数が変更されないように定義できますか?

const  APP_NAME = "前端小智@大迁世界"

function getApplicationName() {
   APP_NAME = "他是谁?"
   return APP_NAME // 这里会抛出 TypeError 错误
}

const を使用して定義された変数の値を変更しようとすると、次のエラーが発生します:

「TypeError: Assignment to constant variable.」

const 変数の値が変更されないようにすることはできますか?

const fruites = ['葡萄', '哈密瓜']
fruites.push('香蕉')

console.log(fruites ) //  ["葡萄", "哈密瓜", "香蕉"]
const constants = {
  APP_NAME: "前端小智@大迁世界"
}
constants.APP_NAME = "他是谁?"
console.log(constants.APP_NAME) // 他是谁?

上の 2 つの例からわかるように、const を使用した場合でも、配列またはオブジェクトの値を変更することもできます。

const は、変数の値を不変にするのではなく、変数の参照アドレスを使用して変数を可変にします。

配列とオブジェクトの場合、参照は変更できませんが、値は変更できることがわかりました。配列やオブジェクトの値が変更されないようにするにはどうすればよいですか?

Use Object.freeze()

これは Object.freeze() が機能する場所です 、Object.freeze はオブジェクトと配列の値の変更を無視します。

let constants = Object.freeze({
  APP_NAME: "前端小智@大迁世界"
})
constants.APP_NAME = "他是谁?"
console.log(constants.APP_NAME) // "前端小智@大迁世界"

この例からわかるように、値を変更してもエラーはスローされず、オブジェクトの状態には影響しません。

Object.freeze() は、オブジェクトの値の変更を防ぐことはできますが、参照の変更を防ぐことはできません:

let constants = Object.freeze({
  APP_NAME: "前端小智@大迁世界"
})
constants = {
   APP_NAME : "Unknown App"
}
console.log(constants.APP_NAME); // "Unknown App"

要約:

  1. const オブジェクトまたは配列の参照を変更することはできませんが、その値は変更できます。
  2. Object.freeze() オブジェクトまたは配列の値の変更を無視します。

それらをグループ化すると、オブジェクトまたは配列の参照と値が変更されなくなります。

Object.freeze() で const を使用する

const constants = Object.freeze({
  APP_NAME : "Coding N Concepts"
});

constants.APP_NAME = "Unknown App"; // 这被忽略

constants = { 
  APP_NAME : "Unknown App" 
}; // 这将抛出TypeError

上記の例は、constObject.freeze() で使用することが JS で役立つことを示しています。で定数と構成を定義すると非常に便利です。

元のアドレス: https://codingnconcepts.com/javascript/const-vs-object-freeze/

著者: Ashish Lahoti

翻訳アドレス: https ://segmentfault.com/a/1190000038140180

プログラミング関連の知識については、 プログラミング学習 Web サイト をご覧ください。 !

以上がJavaScriptのconstとObject.freeze()の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。