The Symbol.unscopables property in Javascript is a well-known symbol that is used to specify an object value of whose own and inherited property names are excluded from the environment bindings.
Syntax:
object[Symbol.unscopables]
Property attributes: This property holds an Object and it is not Writable, Enumerable and Configurable.
Return value: Check the variable appears in the lexical scope variable.
The below examples illustrate the Symbol.unscopables properties in JavaScript:
Example 1:In this example, we will see the output If all property are set to false.
// JavaScript to illustrate Symbol.toPrimitive let obj1 = { val: "Have" ,
val1: "FUN"
}; obj1[Symbol.unscopables] = { val1: false ,
val: false
}; with (obj1) {
console.log(val1);
} with (obj1) {
console.log(val);
} |
Output:
"FUN" "Have"
Example 2: In this example, we will see the output If any property is set to true.
// JavaScript to illustrate Symbol.toPrimitive let obj1 = { val: "Have" ,
val1: "FUN"
}; obj1[Symbol.unscopables] = { val1: false ,
val: true
}; with (obj1) {
console.log(val1);
} with (obj1) {
console.log(val);
} |
Output:
"FUN" Error: val is not defined
Example 3: In this example, we will see all the unscopables
let list = []; with (Array.prototype) {
list.push( 'unscopables' );
} console.log(Object.keys(Array.prototype[Symbol.unscopables])); |
Output:
[ 'copyWithin', 'entries', 'fill', 'find', 'findIndex', 'flat', 'flatMap', 'includes', 'keys', 'values' ]
Supported Browsers: The browsers are supported by JavaScript Symbol.unscopables properties are listed below:
- Google Chrome 45
- Edge 12 and above
- Firefox 48 and above
- Opera 32 and above
- Safari 9 and above
We have a complete list of Javascript symbols, to check those please go through the Javascript Symbol Complete Reference article.