當前位置:首頁 » 服務存儲 » weakset可以存儲值
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

weakset可以存儲值

發布時間: 2022-09-27 00:02:07

❶ Node assert的用法

assert模塊提供了斷言測試的函數,用於測試不變式

有strict和legacy兩種模式,建議只使用strict模式

error的一個子類,表明斷言的失敗。assert模塊跑出的所有錯誤都是AssertionError類的實例

當使用strict模式時,任何assert函數都會使用嚴格函數模式的等式,所以assert.deepEqual()會等同於assert.deepStrictEqual()

除此以外,涉及對象的錯誤信息會產生一個錯誤差異比較,而不是展示對方的對象,legacy模式則不會這樣

ssert.ok()  的別名。

strict 模式

assert.deepStrictEqual()  的別名。

If the values are not equal, an AssertionError is thrown with a message property set equal to the value of the message parameter. If the message parameter is undefined, a default error message is assigned. If the message parameter is an instance of an  Error  then it will be thrown instead of the AssertionError.

如果值不相等,則會拋出一個AssertionError,該消息屬性集等於消息參數的值。如果消息參數未定義,則指定一個默認的錯誤消息。如果消息參數是一個錯誤的實例,那麼它將被拋出而不是AssertionError。

測試 actual 參數與 expected 參數是否深度相等。 深度相等意味著子對象中可枚舉的自身屬性也會按以下規則遞歸地比較

原始值運用  SameValue比較法 進行比較,使用  Object.is()  函數。

對象的 類型標簽 應該相同。

對象的 原型 使用 全等運算符 比較。

只比較 可枚舉的自身屬性 。

Error  的名稱與信息也會比較,即使不是可枚舉的屬性。

可枚舉的自身  Symbol  屬性也會比較。

對象封裝器  會同時比較對象與解封裝後的值。

Object 屬性的比較是無序的。

Map 鍵名與 Set 子項的比較是無序的。

當兩邊的值不相同或遇到循環引用時,遞歸會停止。

WeakMap  與  WeakSet  的比較不依賴於它們的值。

等待 block 的 promise 完成,如果 block 是一個函數,則立即調用該函數並等待返回的 promise 完成,然後檢查 promise 是否被 reject。

如果 block 是一個函數且同步地拋出一個錯誤,則 assert.doesNotReject() 會返回一個被 reject 的 Promise 並傳入該錯誤。 如果該函數沒有返回一個 promise,則 assert.doesNotReject() 會返回一個被 reject 的 Promise 並傳入  ERR_INVALID_RETURN_VALUE  錯誤。 以上兩種情況都會跳過錯誤處理函數。

error 可以是  Class 、 RegExp  或校驗函數

斷言 block 函數不會拋出錯誤。

當 assert.doesNotThrow() 被調用時,它會立即調用 block 函數。

如果拋出錯誤且錯誤類型與 error 參數指定的相同,則拋出 AssertionError。 如果錯誤類型不相同,或 error 參數為 undefined,則拋出錯誤。

error 可以是  Class 、 RegExp  或校驗函數。

strict 模式

assert.strictEqual()  的別名

如果值不相等,則用與消息參數的值相等的消息屬性集拋出斷言錯誤。如果消息參數未定義,則分配默認錯誤消息。如果消息參數是錯誤的實例,那麼它將被拋出而不是斷言錯誤。

拋出 AssertionError,並帶上提供的錯誤信息或默認的錯誤信息。 如果 message 參數是  Error  的實例,則會拋出它而不是 AssertionError

如果消息是偽造的,則將錯誤消息設置為所提供的操作符所分離的實際值和期望值。如果只提供兩個實際的和預期的參數,操作員將默認為「!」=。如果消息被提供為第三個參數,它將被用作錯誤消息,其他參數將作為拋出對象上的屬性存儲。如果提供了StActStaskFufft,則該函數之上的所有堆棧幀將從SttTrace中刪除(參見Error .CoprTestStAc跡)。如果未給出參數,則將使用默認消息失敗。

如果 value 不為 undefined 或 null,則拋出 value。 可用於測試回調函數的 error 參數。 堆棧蹤跡會包含傳入 ifError() 的錯誤的所有幀,包括潛在的 ifError() 自身新增的幀。

任何深度不等式的檢驗。與Advest.DeqQualQualor相反。

測試 actual 參數與 expected 參數是否不深度全等。 與  assert.deepStrictEqual()  相反

測試淺、強制不等式與抽象相等的比較!=

使用  SameValue比較法 測試 actual 參數與 expected 參數是否不全等

測試 value 是否為真值。 相當於 assert.equal(!!value, true, message)。

如果 value 不為真值,則拋出一個帶有 message 屬性的 AssertionError,其中 message 屬性的值等於傳入的 message 參數的值。 如果 message 參數為 undefined,則賦予默認的錯誤信息。 如果 message 參數是  Error  的實例,則會拋出它而不是 AssertionError。 如果沒有傳入參數,則 message 會被設為字元串 'No value argument passed to `assert.ok()`'。

等待 block 的 promise 完成,如果 block 是一個函數,則立即調用該函數並等待返回的 promise 完成,然後檢查 promise 是否被 reject。

如果 block 是一個函數且同步地拋出一個錯誤,則 assert.rejects() 會返回一個被 reject 的 Promise 並傳入該錯誤。 如果該函數沒有返回一個 promise,則 assert.rejects() 會返回一個被 reject 的 Promise 並傳入  ERR_INVALID_RETURN_VALUE  錯誤。 以上兩種情況都會跳過錯誤處理函數。

該函數相當於  assert.throws() ,除了需要等待完成的非同步特性。

error 可以是  Class 、 RegExp 、校驗函數、每個屬性都會被測試的對象、或每個屬性(包括不可枚舉的 message 和 name 屬性)都會被測試的錯誤實例。

如果指定了 message,則當 block 沒被 reject 時,message 參數會作為 AssertionError 的錯誤信息。

使用  SameValue比較法 測試 actual 參數與 expected 參數是否全等。

斷言 block 函數會拋出錯誤。

error 可以是  Class 、 RegExp 、校驗函數、每個屬性都會被測試是否深度全等的校驗對象、或每個屬性(包括不可枚舉的 message 和 name 屬性)都會被測試是否深度全等的錯誤實例。 當使用對象時,可以使用正則表達式來校驗字元串屬性。 詳見下面的例子。

如果指定了 message 參數,則當 block 函數不拋出錯誤時,message 參數會作為 AssertionError 的錯誤信息。

例子,error 參數為自定義的校驗對象或錯誤實例:

例子,error 參數為構造函數:

例子,error 參數為  RegExp :

使用正則表達式運行錯誤對象的 .toString, 且包括錯誤的名稱

例子,error 參數為自定義函數:

注意,error 不能是字元串。 如果第二個參數是字元串,則視為不傳入 error,且字元串會用於 message。 這可能會造成誤解。 使用與拋出的錯誤信息相同的信息,會導致 ERR_AMBIGUOUS_ARGUMENT 錯誤。 如果需要使用字元串作為第二個參數,請仔細閱讀下面的例子。

鑒於會混淆語句,建議不要使用字元串作為第二個參數。 這可能會導致不易定位的錯誤。

❷ javascript中的async是什麼意思 例如 xmlDom.load();

原文:https://zhuanlan.hu.com/p/6

今天的 JavaScript 已經無處不在了,以傳統的方式使用 JavaScript,開發者可以在各種 Web 瀏覽器中創建 Web 應用;通過 Node.js,可以開發命令行工具與伺服器等應用;而在桌面領域,通過基於 JavaScript 與 HTML、CSS 等 Web 技術的 Electron 框架可以構建跨平台桌面應用;React Native 則可以用來開發跨平台移動應用;此外,JavaScript 甚至可以在 IoT 設備上運行。

Ecma TC39 管理著 ECMAScript 生態的發展,它是當前 JavaScript 語言背後的標准,谷歌 V8 團隊一直積極參與 JavaScript 相關標准化工作。

V8 是谷歌開源的 JavaScript 引擎(同時也是 WebAssembly 引擎),前面提到的 Chrom、Node.js 與 Electron 等平台都基於 V8。同時除了 Chrome,基於 Chromium 的一系列 Web 瀏覽器,如 Opera 與即將正式發布的 Microsoft Edge 在底層也基於 V8。

在前幾天的 Google I/O 2019 上,V8 團隊的 Mathias Bynens 與 Sathya Gunasekaran 分享了 JavaScript 的最新研發進展。