នៅក្នុងភាសា JavaScript នៅពេលដែលយើងយកវត្ថុណាមួយមកប្រើ ការស្វែងរកវត្ថុនោះ ត្រូវធ្វើឡើងតាមគំនូសបំព្រួញដូចខាងក្រោមនេះ៖
គឺថាការស្វែងរកវត្ថុត្រូវធ្វើឡើង ដោយចាប់ផ្តើមនៅក្នុងដែនកំណត់ ដែលវត្ថុត្រូវបានយកទៅប្រើ រួចបានបន្តទៅដែនកំណត់ផ្សេងៗទៀត តាមសញ្ញាព្រួញដូចមាននៅក្នុងរូបខាងលើនេះ រហូតដល់អស់ដែនកំណត់។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតឃ្លាមួយនៅក្នុងដែនកំណត់ក្រៅ
var outerSentence = 'ដែនកំណត់ក្រៅ';
function outerFunction(){
//ការបង្កើតឃ្លាមួយទៀតនៅក្នុងដែលកំណត់ក្នុងនិងឬចារឹកក្នុង
var outerFunctionSentence = 'ដែនកំណត់ចារឹកក្រៅ';
function innerFunction(){
//ការបង្កើតឃ្លាមួយទៀតក្នុងដែនកំណត់ចារឹកក្នុង
var innerFunctionSentence = 'ដែនកំណត់ចារឹកក្នុង';
console.log('ឃ្លាក្រៅត្រូវបានរកឃើញនៅក្នុង៖ '+outerSentence);
console.log('ឃ្លាចារឹកក្រៅត្រូវបានរកឃើញនៅក្នុង៖ '+outerFunctionSentence);
console.log('ឃ្លាចារឹកក្នុងត្រូវបានរកឃើញនៅក្នុង៖ '+innerFunctionSentence);
}
innerFunction();
}
outerFunction();
នៅលើបន្ទាត់លេខ 12 ការសរសរថា 'ឃ្លាក្រៅត្រូវបានរកឃើញនៅក្នុង៖ '+outerSentence គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ outerSentence មកប្រើនៅក្នុងដែនកំណត់ចារឹកក្នុង។ យោងទៅតាមក្បួនច្បាប់នៅក្នុងភាសា JavaScript ការស្វែងរកវត្ថុនោះ ត្រូវធ្វើឡើងជាដំបូង នៅក្នុងដែនកំណត់ចារឹកក្នុងនោះមុនគេ រួចបានឡើងទៅដែនកំណត់ចារឹកក្រៅ រួចបានឡើងទៅដែនកំណត់ក្រៅ និងចុងក្រោយបង្អស់ឡើងទៅដែនកំណត់មានស្រាប់។ វត្ថុឈ្មោះ outerSentence ត្រូវបានរកឃើញនៅក្នុងដែនកំណត់ក្រៅ ព្រោះវាត្រូវបានបង្កើតឡើងនៅទីនោះ។
នៅលើបន្ទាត់លេខ 13 ការសរសរថា 'ឃ្លាចារឹកក្រៅត្រូវបានរកឃើញនៅក្នុង៖ '+outerFunctionSentence គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ outerFunctionSentence មកប្រើនៅក្នុងដែនកំណត់ចារឹកក្នុង។ យោងទៅតាមក្បួនច្បាប់នៅក្នុងភាសា JavaScript ការស្វែងរកវត្ថុនោះ ត្រូវធ្វើឡើងជាដំបូង នៅក្នុងដែនកំណត់ចារឹកក្នុងនោះមុនគេ រួចបានឡើងទៅដែនកំណត់ចារឹកក្រៅ រួចបានឡើងទៅដែនកំណត់ក្រៅ និងចុងក្រោយបង្អស់ឡើងទៅដែនកំណត់មានស្រាប់។ វត្ថុឈ្មោះ outerFunctionSentence ត្រូវបានរកឃើញនៅក្នុងដែនកំណត់ចារឹកក្រៅ ព្រោះវាត្រូវបានបង្កើតឡើងនៅទីនោះ។
នៅលើបន្ទាត់លេខ 14 ការសរសរថា 'ឃ្លាចារឹកក្នុងត្រូវបានរកឃើញនៅក្នុង៖ '+innerFunctionSentence គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ innerFunctionSentence មកប្រើនៅក្នុងដែនកំណត់ចារឹកក្នុង។ យោងទៅតាមក្បួនច្បាប់នៅក្នុងភាសា JavaScript ការស្វែងរកវត្ថុនោះ ត្រូវធ្វើឡើងជាដំបូង នៅក្នុងដែនកំណត់ចារឹកក្នុងនោះមុនគេ រួចបានឡើងទៅដែនកំណត់ចារឹកក្រៅ រួចបានឡើងទៅដែនកំណត់ក្រៅ និងចុងក្រោយបង្អស់ឡើងទៅដែនកំណត់មានស្រាប់។ វត្ថុឈ្មោះ innerFunctionSentence ត្រូវបានរកឃើញនៅក្នុងដែនកំណត់ចារឹកក្នុង ព្រោះវាត្រូវបានបង្កើតឡើងនៅទីនោះ។
ដោយការស្វែងរកវត្ថុផ្សេងៗ ត្រូវប្រព្រឹត្តទៅដូចនៅក្នុងគំនូសបំព្រួញខាងលើ ដូចនេះយើងមិនអាចយកវត្ថុនៅក្នុងដែនកំណត់នៅខាងក្រោម មកប្រើនៅក្នុងដែនកំណត់នៅខាងលើបានឡើយ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
function outerFunction(){
var outerSentence = 'ដែនកំណត់ចារឹកក្រៅ';
//ការសាកល្បងយកវត្ថុនៅក្នុងដែនកំណត់ចារឹកក្នុងមកប្រើ
console.log(innerSentence);
function innerFunction(){
var innerSentence = 'ដែនកំណត់ចារឹកក្នុង';
}
innerFunction();
}
outerFunction();
នៅលើបន្ទាត់លេខ 4 ការសរសេរថា console.log(innerSentence) គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ innerSentence ដែលជាវត្ថុនៅក្នុងដែនកំណត់ចារឹកក្នុង មកប្រើនៅក្នុងដែនកំណត់ចារឹកក្រៅ។ ប្រការនេះមិនអាចធ្វើទៅបានឡើយ កំហុសស្តីពីការរកវត្ថុមិនឃើញ បានកើតមានឡើង ព្រោះការស្វែងរកវត្ថុនោះ ត្រូវធ្វើឡើងចាប់ពីដែនកំណត់ចារឹកក្រៅឡើងទៅលើ។
ម៉្យាងទៀត វត្ថុនៅក្នុងដែនកំណត់ផ្សេងៗគ្នា គឺជាវត្ថុខុសៗគ្នា ទោះបីជាវត្ថុទាំងនោះមានឈ្មោះដូចគ្នាក៏ដោយ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
//ការបង្កើតវត្ថុមានឈ្មោះ info មួយនៅក្នុងដែលកំណត់ក្រៅ
var info = 1000;
console.log('នៅក្នុងដែនកំណត់ក្រៅ វត្ថុឈ្មោះ info គឺជា៖ ' + info);
function outerFunction(){
//ការបង្កើតវត្ថុឈ្មោះ info មួយទៀតនៅក្នុងដែនកំណត់ក្នុង
var info = true;
console.log('នៅក្នុងដែនកំណត់ចារឹកក្រៅ វត្ថុឈ្មោះ info គឺជា៖ '+info);
function innerFunction(){
//ការបង្កើតវត្ថុឈ្មោះ info មួយទៀតនៅក្នុងដែនកំណត់ចារឹកក្នុង
var info = 'ប្រយោគ';
console.log('នៅក្នុងដែនកំណត់ចារឹកក្នុង វត្ថុឈ្មោះ info គឺជា៖ '+info);
}
innerFunction();
}
outerFunction();
នៅក្នុងកម្មវិធីខាងលើ យើងសង្កេតឃើញថា មានវត្ថុមានឈ្មោះថា info ដូចគ្នាចំនួន 3 ត្រូវបានបង្កើតឡើងនៅក្នុងដែនកំណត់ 3 ខុសៗគ្នា។ ជាលទ្ធផល វត្ថុទាំងនោះគឺជាវត្ថុ 3 ខុសៗគ្នា ទោះជាវាមានឈ្មោះដូចគ្នាយ៉ាងណាក៏ដោយ ព្រោះវាត្រូវបានបង្កើតឡើងនៅក្នុងដែនកំណត់បី ខុសៗគ្នា។
នៅលើបន្ទាត់លេខ 4 ការសរសេរថា 'នៅក្នុងដែនកំណត់ក្រៅ វត្ថុឈ្មោះ info គឺជា៖ '+info គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ info មកប្រើនៅក្នុងដែនកំណត់ក្រៅ។ អាស្រ័យទៅតាមក្បួនច្បាប់នៃការស្វែងរកវត្ថុនៅក្នុងភាសា JavaScript វត្ថុឈ្មោះ info នៅក្នុងដែនកំណត់ក្រៅ ត្រូវបានយកមកប្រើ។
នៅលើបន្ទាត់លេខ 10 ការសរសេរថា 'នៅក្នុងដែនកំណត់ចារឹកក្រៅ វត្ថុឈ្មោះ ព័ត៌មាន គឺជា៖ '+info គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ info មកប្រើនៅក្នុងដែនកំណត់ចារឹកក្រៅ។ អាស្រ័យទៅតាមក្បួនច្បាប់នៃការស្វែងរកវត្ថុនៅក្នុងភាសា JavaScript វត្ថុឈ្មោះ info នៅក្នុងដែនកំណត់ចារឹកក្រៅ ត្រូវបានយកមកប្រើ។
នៅលើបន្ទាត់លេខ 16 ការសរសេរថា 'នៅក្នុងដែនកំណត់ចារឹកក្នុង វត្ថុឈ្មោះ ព័ត៌មាន គឺជា៖ '+info គឺជាបញ្ជាដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកវត្ថុឈ្មោះ info មកប្រើនៅក្នុងដែនកំណត់ចារឹកក្នុង។ អាស្រ័យទៅតាមក្បួនច្បាប់នៃការស្វែងរកវត្ថុនៅក្នុងភាសា JavaScript វត្ថុឈ្មោះ info នៅក្នុងដែនកំណត់ចារឹកក្នុង ត្រូវបានយកមកប្រើ។
ចំពោះវត្ថុដែលស្ថិតនៅក្នុងក្បួនខុសៗគ្នា គឺជាវត្ថុខុសៗគ្នា ទោះបីជាវត្ថុទាំងនោះមានឈ្មោះដូចគ្នាក៏ដោយ ពីព្រោះនៅក្នុងក្បួននិមួយៗ គឺជាដែនកំណត់ក្នុងខុសៗគ្នា។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
function getProfit(sale, purchase){
var profit = sale - purchase;
return profit;
}
function totalMoney(sale, purchase){
//ការយកក្បួនដែលមានដំណាង sale និង purchase ដូចគ្នាមកប្រើ
var cash = sale + purchase + getProfit(sale, purchase);
console.log('ទឹកប្រាក់សរុបគឺ៖ '+cash);
}
totalMoney(1000, 900);
នៅលើបន្ទាត់លេខ 8 ការសរសេរថា var cash = sale + purchase + getProfit(sale, purchase) គឺជាបញ្ជា ដែលនៅក្នុងនោះ មានការតម្រូវឲ្យយកក្បួនឈ្មោះ getProfit មកប្រើជាបញ្ជានៅក្នុងក្បួនឈ្មោះ totalMoney ។ ក្នុងករណីនេះ ដំណាង sale និង purchase របស់ក្បួនឈ្មោះ totalMoney ត្រូវបានផ្តល់ជាដំណឹងរៀងគ្នា ឲ្យទៅដំណាង sale និង purchase នៅក្នុងក្បួនឈ្មោះ getProfit នោះ។
ដូចនេះយើងឃើញថា ក្បួនឈ្មោះ getProfit និងក្បួនឈ្មោះ totalMoney សុទ្ធតែមានដំណាងដែលជាឈ្មោះ sale និង purchase ដូចគ្នា តែឈ្មោះទាំងនោះ ជាឈ្មោះខុសៗគ្នា ព្រោះវាស្ថិតនៅក្នុងដែនកំណត់ក្នុង ដែលជាក្បួនពីរផ្សេងគ្នា។
សរុបមក ឈ្មោះរបស់វត្ថុនៅក្នុងភាសា JavaScript ក៏ដូចជាឈ្មោះរបស់មនុស្សយើងដែរ។ ពោលគឺមនុស្សឈ្មោះ វុទ្ធី នៅក្នុងគ្រួសារ ក ខុសពីមនុស្សឈ្មោះ វទ្ធី នៅក្នុងគ្រួសារ ខ ទោះបីជាមនុស្សទាំងពីរនាក់នោះមានឈ្មោះដូចគ្នាយ៉ាងណាក៏ដោយ៕