W3cubDocs

/JavaScript

WeakMap.prototype.getOrInsert()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

The getOrInsert() method of WeakMap instances returns the value corresponding to the specified key in this WeakMap. If the key is not present, it inserts a new entry with the key and a given default value, and returns the inserted value.

If the computation of the default value is expensive, consider using WeakMap.prototype.getOrInsertComputed() instead, which takes a callback to compute the default value only if it's actually needed.

Try it

const map = new WeakMap([[window, "foo"]]);
console.log(map.getOrInsert(window, "default"));
// Expected output: "foo"

console.log(map.getOrInsert({}, "default"));
// Expected output: "default"

Syntax

getOrInsert(key, defaultValue)

Parameters

key

The key of the value to return from the WeakMap object. Must be either an object or a non-registered symbol. Object keys are compared by reference, not by value.

defaultValue

The value to insert and return if the key is not already present in the WeakMap object.

Return value

The value associated with the specified key in the WeakMap object. If the key can't be found, undefined is returned.

Exceptions

TypeError

Thrown if key is not an object or a non-registered symbol.

Examples

>

Using getOrInsert()

const wm = new WeakMap();
const obj = {};

console.log(wm.get(obj)); // undefined
console.log(wm.getOrInsert(obj, "default")); // "default"
console.log(wm.get(obj)); // "default"
console.log(wm.getOrInsert(obj, "another default")); // "default"

Specifications

Browser compatibility

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
getOrInsert 145 145 144 No 26.2 145 144 No 26.2 No 145 26.2 1.2.20 ? ?

See also

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/getOrInsert