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