關於JavaScrip創建常數的基礎知識(圖文教學)
這篇文章主要介紹了JavaScrip創建常數的相關知識點,幫助大家對JS更加深入的學習,參考下吧。
本文透過JS中建立常數的定義用法以及函數寫法中常見的錯誤進行深入分析,希望對大家有所用處:
#所謂常數即只能讀取不能編輯(刪除,修改)的變數。
js並沒有原始的常數說法(即自訂的,原始生態的),但是可以用一些偏僻的路子去創建。
1:const es6中的宣告關鍵字。
上面宣告了兩個變量,當執行修改操作時就會報錯。從某種程度上來說,const是可以創建變數(基本類型)的。但對引用類型就捉襟見肘。
當宣告的變數是一個引用型別時即對象,對物件的操作(刪除,修改,新增)都是可以進行的。
2:Object 方法(defineProperty,seal,freeze)實作
1) Object.defineProperty: 該方法會直接在一個物件上定義一個新屬性,或修改一個物件的現有屬性, 並傳回這個物件。
採用上述方法之後後續對a的修改功能就失效了,雖然修改功能不能正常執行, 但是刪除功能卻還是可以照常進行。
在刪除之後繼續加入a屬性時,a又變成可改變的了。上述只是將a屬性的可寫屬性改了,還有一個configurable屬性可以設定。 writable屬性只是將對應的屬性變更為不可直接更改,但是可以走小路(先刪除在新增)。
到此屬性a就算定下來了,不能修改,也不能刪除。
但是,新的風暴有出現了。 。 。 a雖然定下來了,但對於TEST_D這個變數來說,還沒結束。 。 。
雖然屬性a不能變動了,但是不影響對其他屬性的操作,例如b,s,u啊的,當然針對這些屬性也可以像上述方式一樣將其餘屬性的描述符,但還是無法解決對TEST_D的擴充。
2) Object.preventExtensions: 此方法讓一個物件變的不可擴展,也就是永遠無法再新增新的屬性。 查看詳情
透過該方法就可以將物件設為不可擴充了,也就是不可新增屬性了,這樣這個變數就不能被修改了。
3)Object.seal:讓一個物件密封並返回被密封之後的對象,新對象將變得不可擴展,即不能添加新的屬性但是可以修改原本可寫狀態的屬性
利用上述兩種方法循環使用是可以去創建常數的,但是比較複雜,而且當物件比較大的時候,程式碼量會比較大。 Object.seal()可以簡化這個過程。這個方法可以將物件變得不可擴展,屬性不可刪除。在此基礎上在將物件的所有屬性的描述符writable改為false就能得到我們要的變數了,也就是所謂常數。
4) Object.freeze: 此方法可以凍結一個對象,凍結指的是不能為這個對象添加新的屬性,不能修改其已有屬性的值,不能刪除已有屬性,以及不能修改該物件已有屬性的可枚舉性、可配置性、可寫性。也就是說,這個物件永遠是不可變的。此方法傳回被凍結的物件。
Object.freeze方法是在seal基礎上在將所有屬性的描述子writable改為false。
但是當變數的屬性值又為物件時,及下列情況:
/** * * * @param {any} obj */ function freezeObj(obj) { Object.freeze(obj); Object.keys(obj).forEach(key => { if (typeof obj[key] === 'object') { freezeObj(obj[key]) } }) }
即:當存在多重物件時,需要循環呼叫凍結方法。
3:閉包
const USER = (() => { const USER = { name: 'evening', gender: 'M' } return { get(name){ return user[name] } } })() USER.get('name')
閉包用了比較隱密的方法,將真正的物件原型保存在記憶體中而且不會被回收,變相的將USER這個變數'保護'起來,並且提供訪問的接口,但是不提供修改的接口。
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
#以上是關於JavaScrip創建常數的基礎知識(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

常量也稱為變量,一旦定義,其值在程式執行期間就不會改變。因此,我們可以將變數宣告為引用固定值的常數。它也被稱為文字。必須使用Const關鍵字來定義常數。語法C程式語言中使用的常數語法如下-consttypeVariableName;(or)consttype*VariableName;不同類型的常數在C程式語言中使用的不同類型的常數如下所示:整數常數-例如:1,0,34, 4567浮點數常數-例如:0.0,156.89,23.456八進制和十六進制常數-例如:十六進制:0x2a,0xaa..八進制

常量和變數用於在程式設計中儲存資料值。變數通常指的是可以隨時間變化的值。而常數是一種變數類型,其值在程式執行期間不能被改變。在Python中只有六個內建常數可用,它們是False、True、None、NotImplemented、Ellipsis(...)和__debug__。除了這些常數之外,Python沒有任何內建資料類型來儲存常數值。範例下面示範了常數的範例-False=100輸出SyntaxError:cannotassigntoFalseFalse是Python中的內建常數,用於儲存布林值

常量變數是其值固定且程式中只存在一個副本的變數。一旦你聲明了一個常數變數並給它賦值,你就不能在整個程式中再次改變它的值。與其他語言不同,Java不直接支援常數。但是,你仍然可以透過宣告一個變數為靜態和final來創建一個常數。靜態-一旦你聲明了一個靜態變量,它們將在編譯時加載到內存中,即只有一個副本可用。 Final-一旦你宣告了一個final變量,就不能再修改它的值。因此,你可以透過將實例變數宣告為靜態和final來在Java中創建一個常數。範例 示範classData{&am

PHP是一種廣泛應用於網頁開發的伺服器端腳本語言,它的靈活性和易用性使其成為許多開發人員的首選。然而,在使用PHP時,我們有時會遇到一些報錯的情況。本篇文章將重點討論"呼叫未定義的常數"錯誤,以及如何解決這個問題。一、問題描述當我們在程式碼中使用一個未定義的常數時,PHP會拋出一個致命錯誤,提示我們呼叫了一個未定義的常數。以下是一個常見的例子:echoMY_

MySQL是一個開源的關聯式資料庫管理系統,被廣泛地應用於Web應用程式的開發和資料儲存。學習MySQL的SQL語言對於資料管理員和開發者來說是非常必要的。 SQL語言是MySQL中的核心部分,因此在學習MySQL之前,你需要對SQL語言有充分的了解,本文旨在為你詳細講解SQL語句基礎知識,讓你一步一步了解SQL語句。 SQL是結構化查詢語言的簡稱,用於在關係型數

本文基於Python基礎,主要介紹了Python基礎中變數和常數的區別,對於變數的用法做了詳細的講解,用豐富的案例 ,程式碼效果圖的展示幫助大家更好理解 。

學習基本資料型別常數的定義和初始化方法,需要具體程式碼範例在程式設計中,常常會用到各種基本資料型別,例如整數、浮點型、字元型等。在使用這些資料類型時,不僅需要了解它們的定義和用法,還需要知道如何定義和初始化它們的常數。本文將為大家介紹基本資料型態常數的定義和初始化方法,並給出具體的程式碼範例。整數常數的定義和初始化方法整數常數包括int、long、short和byt

學習canvas需要掌握哪些基礎?隨著現代Web技術的發展,使用HTML5中的<canvas>標籤進行繪圖成為一種常見的方式。 Canvas是用於繪製圖形、動畫和其他影像的HTML元素,它可以利用JavaScript進行操作和控制。如果你想要學習canvas並掌握其基礎知識,以下將為你詳細介紹。 HTML與CSS基礎:在學習canvas之
