នៅក្នុងភាសា ES6 យើងអាចបង្កើតក្បួនមួយនៅក្នុងក្បួនមួយទៀតបាន។ ក្នុងករណីនេះ ទីកន្លែងរបស់ក្បួននៅខាងក្នុងត្រូវហៅថា ដែនកំណត់ចារឹកក្នុង (nested scope) ឯចំណែកទីកន្លែងរបស់ក្បួននៅខាងក្រៅត្រូវហៅថា ដែនកំណត់ចារឹក្រៅ (enclosing scope) ។ ហើយដើម្បីបង្កើតអថេរផ្សេងៗនៅក្នុងដែនកំណត់ចារឹកក្នុង និងដែនកំណត់ចារឹកក្រៅ យើងត្រូវធ្វើដូចខាងក្រោមនេះ៖
//ការបង្កើតក្បួនចារឹកក្រៅ
function outerFunction(){
let listOfMoney = [2000, 1500]
console.log(`Data in enclosing scope is ${listOfMoney}`)
//ការបង្កើតក្បួនចារឹកក្នុង
function innerFunction(){
let setOfMoney = {'sale':1000, 'purchase':900}
console.log(`Data in nested scope is ${setOfMoney}`)
}
innerFunction()
}
outerFunction()
អថេរនៅក្នុងដែនកំណត់ចារឹកក្នុង និងអថេរនៅក្នុងដែនកំណត់ចារឹកក្រៅ ក៏ដូចជាអថេរនៅក្នុងដែនកំណត់ក្នុងជាទូទៅដែរ គឺវាត្រូវបានបង្កើតឡើងនៅពេលដែលក្បួនត្រូវបានយកទៅប្រើ និងត្រូវលុបចោលទៅវិញ នៅពេលដែលក្បួនត្រូវបានប្រើរួចហើយ។
ចំណែកឯ ដែនកំណត់មានស្រាប់ (built-in scope) គឺជាទីកន្លែងមានស្រាប់មួយកន្លែង នៅក្នុងសតិរបស់កំព្យូទ័រ ដែលនៅក្នុងនោះ អថេរមួយចំនួនត្រូវបានបង្កើតឡើងរួចជាស្រច ទុកសម្រាប់យកទៅប្រើការនៅកន្លែងផ្សេងៗទៀត។ វត្ថុទាំងនោះ ត្រូវគេឲ្យឈ្មោះថាជា អថេរមានស្រាប់ (built-in object) ដែលអាចត្រូវយកទៅប្រើនៅកន្លែងណាក៏បានដែរ។ យើងនឹងបានស្គាល់អថេរទាំងនោះ នៅពេលបន្តិចទៀតនេះ៕