Javascript - boshqa o'zgarmaydigan ta'rifining bir qismi bo'lgan o'zgarmaydigan qiymatini o'zgartiring

Qiymati qisman boshqa o'zgaruvchiga tegishli bo'lgan o'zgaruvchiga ega. Men boshlang'ich o'zgaruvchining ham o'zgarishi uchun bu o'zgaruvchining qiymatini o'zgartirmoqchiman. Ammo bu sodir bo'lmaydi. Ikkinchi satrga qarang:

var offset = 0;
var message = 'the number is ' + offset;

Agar "offset" ni o'zgartirsam, "xabar" o'zgarmaydi:

console.log(message);   //this says 'the number is 0'

offset +=20;             //offset is changed to 20

console.log(message);     //the message is still 'the number is 0'

Nima uchun u ishlamaydi va uni qanday hal qilaman?

0
Emas, balki belgilangan . O'zgaruvchining qiymati o'zgarmaydigan qurilgan ga ega. Qanday qilib uni hal qilish mumkin? Yangi qiymat bilan yana xabar ni yarating. Va yana bir xil kodni qayta-qayta yozib turadigan bo'lsa, uni (shablon) funktsiyasiga qo'ying.
qo'shib qo'ydi muallif Thomas, manba
Emas, balki belgilangan . O'zgaruvchining qiymati o'zgarmaydigan qurilgan ga ega. Qanday qilib uni hal qilish mumkin? Yangi qiymat bilan yana xabar ni yarating. Va yana bir xil kodni qayta-qayta yozib turadigan bo'lsa, uni (shablon) funktsiyasiga qo'ying.
qo'shib qo'ydi muallif Thomas, manba
Bu o'zgaruvchan narsa biladigan biron bir tilda ishlamaydi.
qo'shib qo'ydi muallif bejado, manba
Bu o'zgaruvchan narsa biladigan biron bir tilda ishlamaydi.
qo'shib qo'ydi muallif bejado, manba
bu JavaScript ishlamaydi, chunki JavaScript-da o'zgaruvchan (ko'p tillarda bo'lgani kabi) dangasa belgilashdan ko'ra qiziqarli topshiriqdan foydalanadi. Siz xohlagan narsaga erishish uchun siz xabarni funksiya sifatida yaratishingiz kerak bo'ladi.
qo'shib qo'ydi muallif Hamms, manba
bu JavaScript ishlamaydi, chunki JavaScript-da o'zgaruvchan (ko'p tillarda bo'lgani kabi) dangasa belgilashdan ko'ra qiziqarli topshiriqdan foydalanadi. Siz xohlagan narsaga erishish uchun siz xabarni funksiya sifatida yaratishingiz kerak bo'ladi.
qo'shib qo'ydi muallif Hamms, manba

10 javoblar

Nima uchun ishlamaydi

'ni qilsangiz, raqam' + offset 'dan iborat bo'lsa, offset qiymatini o'qib chiqib, yangi qiymat yaratish uchun habar ga tayinlangan . Yangi qiymat uning qanday yaratilganligini "bilmaydi" va shuning uchun uni qayta baholash mumkin emas. JavaScript-ni qanday ishlashini oddiygina emas.

Dastlabki o'zgaruvchining o'zgarishi uchun u o'zgaruvchining qiymatini o'zgartirmoqchiman.

Bu o'zgaruvchilar bilan mumkin emas. Ammo shunga o'xshash effektlarni olish uchun siz bilan ob'ektini foydalanishi mumkin:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var obj = {
  offset: 0,
  get message() {
    return 'the number is ' + this.offset;
  },
};

console.log(obj.message);
obj.offset += 20;
console.log(obj.message);
</div> </div>

(Eslatma: qabul qiluvchi zarur emas, balki odatdagi usul/funktsiyani yaratish va uni obj.message() deb atash mumkin)

1
qo'shib qo'ydi

Nima uchun ishlamaydi

'ni qilsangiz, raqam' + offset 'dan iborat bo'lsa, offset qiymatini o'qib chiqib, yangi qiymat yaratish uchun habar ga tayinlangan . Yangi qiymat uning qanday yaratilganligini "bilmaydi" va shuning uchun uni qayta baholash mumkin emas. JavaScript-ni qanday ishlashini oddiygina emas.

Dastlabki o'zgaruvchining o'zgarishi uchun u o'zgaruvchining qiymatini o'zgartirmoqchiman.

Bu o'zgaruvchilar bilan mumkin emas. Ammo shunga o'xshash effektlarni olish uchun siz bilan ob'ektini foydalanishi mumkin:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var obj = {
  offset: 0,
  get message() {
    return 'the number is ' + this.offset;
  },
};

console.log(obj.message);
obj.offset += 20;
console.log(obj.message);
</div> </div>

(Eslatma: qabul qiluvchi zarur emas, balki odatdagi usul/funktsiyani yaratish va uni obj.message() deb atash mumkin)

1
qo'shib qo'ydi

Nima uchun ishlamaydi

'ni qilsangiz, raqam' + offset 'dan iborat bo'lsa, offset qiymatini o'qib chiqib, yangi qiymat yaratish uchun habar ga tayinlangan . Yangi qiymat uning qanday yaratilganligini "bilmaydi" va shuning uchun uni qayta baholash mumkin emas. JavaScript-ni qanday ishlashini oddiygina emas.

Dastlabki o'zgaruvchining o'zgarishi uchun u o'zgaruvchining qiymatini o'zgartirmoqchiman.

Bu o'zgaruvchilar bilan mumkin emas. Ammo shunga o'xshash effektlarni olish uchun siz bilan ob'ektini foydalanishi mumkin:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var obj = {
  offset: 0,
  get message() {
    return 'the number is ' + this.offset;
  },
};

console.log(obj.message);
obj.offset += 20;
console.log(obj.message);
</div> </div>

(Eslatma: qabul qiluvchi zarur emas, balki odatdagi usul/funktsiyani yaratish va uni obj.message() deb atash mumkin)

1
qo'shib qo'ydi

Ikkala holatda ham 0 ko'rinadi, chunki siz uni o'rnatayotgan vaqt offset qiymati 0 va bu xabar strong> o'zingizning qiymatini o'zgartirmaguningizcha ni ushlab turasiz.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = 'the number is ' + offset;
console.log(message);  
offset += 20;             
console.log(message);
</div> </div>

O'zgarishlarni ko'rish uchun offset o'zgaruvchisini message o'zgaruvchiga qayta belgilashingiz kerak (yangilang).

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = 'the number is ' + offset;
console.log(message);  
offset += 20;  
message = 'the number is ' + offset;
console.log(message);
</div> </div>
1
qo'shib qo'ydi

Ikkala holatda ham 0 ko'rinadi, chunki siz uni o'rnatayotgan vaqt offset qiymati 0 va bu xabar strong> o'zingizning qiymatini o'zgartirmaguningizcha ni ushlab turasiz.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = 'the number is ' + offset;
console.log(message);  
offset += 20;             
console.log(message);
</div> </div>

O'zgarishlarni ko'rish uchun offset o'zgaruvchisini message o'zgaruvchiga qayta belgilashingiz kerak (yangilang).

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = 'the number is ' + offset;
console.log(message);  
offset += 20;  
message = 'the number is ' + offset;
console.log(message);
</div> </div>
1
qo'shib qo'ydi

Its just a simple assignment that when program flow reach it, concatenates "the number is" to value of offset & continues towards next lines to the end of program.

Bu Javascriptning tabiati, ibtidoiy turlari (Number, String, va boshqalar) qiymati bo'yicha o'tadi. Shunday qilib, ofset ichidagi o'zgarishlar message da aks ettirilmaydi.

O'zgaruvchilar ob'ektni "ushlab turmaydi", u havola qiladi. Siz yana bir o'zgaruvchiga bu havolani belgilashingiz mumkin, endi ikkalasi ham xuddi shu ob'ektga murojaat qiladilar. Har doim qiymati bilan (hatto bu qiymat mos yozuvlar bo'lsa ham) o'tadi.   Parametr sifatida qabul qilingan o'zgaruvchining qiymatini o'zgartirish uchun hech qanday usul yo'q, bu JS tomonidan referent orqali o'tishni qo'llab-quvvatlasa mumkin bo'lishi mumkin. Bu yerdan

Har doim xabarga qaram bo'lish uchun siz uni funksiya sifatida belgilashingiz mumkin:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = function(){
  return('the number is ' + offset);
}

console.log(message());   //this says 'the number is 0'

offset +=20;             //offset is changed to 20

console.log(message());  //this says 'the number is 20'
</div> </div>
1
qo'shib qo'ydi
"ibtidoiy turlari (sonlar, mag'lubiyatlar, va hokazo) qiymatdan o'tadi." Bu erda atamalar bilan ehtiyot bo'ling. "Değer orqali o'tish" va "mos yozuvlar bilan o'tish" odatda o'zgaruvchilar (/ parametrlari) o'rtasidagi munosabatni tavsiflaydi. O'zgaruvchan qiymatning haqiqiy "turi" ahamiyatsiz. qiymat turlarini (ibtidoiy) va mos yozuvlar turlari (ob'ektlar) deb o'ylashingiz mumkin, ammo bu "qiymatdan o'tish" bilan hech qanday aloqasi yo'q. en.wikipedia.org/wiki/Evaluation_strategy ga qarang.
qo'shib qo'ydi muallif Felix Kling, manba

Its just a simple assignment that when program flow reach it, concatenates "the number is" to value of offset & continues towards next lines to the end of program.

Bu Javascriptning tabiati, ibtidoiy turlari (Number, String, va boshqalar) qiymati bo'yicha o'tadi. Shunday qilib, ofset ichidagi o'zgarishlar message da aks ettirilmaydi.

O'zgaruvchilar ob'ektni "ushlab turmaydi", u havola qiladi. Siz yana bir o'zgaruvchiga bu havolani belgilashingiz mumkin, endi ikkalasi ham xuddi shu ob'ektga murojaat qiladilar. Har doim qiymati bilan (hatto bu qiymat mos yozuvlar bo'lsa ham) o'tadi.   Parametr sifatida qabul qilingan o'zgaruvchining qiymatini o'zgartirish uchun hech qanday usul yo'q, bu JS tomonidan referent orqali o'tishni qo'llab-quvvatlasa mumkin bo'lishi mumkin. Bu yerdan

Har doim xabarga qaram bo'lish uchun siz uni funksiya sifatida belgilashingiz mumkin:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = function(){
  return('the number is ' + offset);
}

console.log(message());   //this says 'the number is 0'

offset +=20;             //offset is changed to 20

console.log(message());  //this says 'the number is 20'
</div> </div>
1
qo'shib qo'ydi
"ibtidoiy turlari (sonlar, mag'lubiyatlar, va hokazo) qiymatdan o'tadi." Bu erda atamalar bilan ehtiyot bo'ling. "Değer orqali o'tish" va "mos yozuvlar bilan o'tish" odatda o'zgaruvchilar (/ parametrlari) o'rtasidagi munosabatni tavsiflaydi. O'zgaruvchan qiymatning haqiqiy "turi" ahamiyatsiz. qiymat turlarini (ibtidoiy) va mos yozuvlar turlari (ob'ektlar) deb o'ylashingiz mumkin, ammo bu "qiymatdan o'tish" bilan hech qanday aloqasi yo'q. en.wikipedia.org/wiki/Evaluation_strategy ga qarang.
qo'shib qo'ydi muallif Felix Kling, manba

Its just a simple assignment that when program flow reach it, concatenates "the number is" to value of offset & continues towards next lines to the end of program.

Bu Javascriptning tabiati, ibtidoiy turlari (Number, String, va boshqalar) qiymati bo'yicha o'tadi. Shunday qilib, ofset ichidagi o'zgarishlar message da aks ettirilmaydi.

O'zgaruvchilar ob'ektni "ushlab turmaydi", u havola qiladi. Siz yana bir o'zgaruvchiga bu havolani belgilashingiz mumkin, endi ikkalasi ham xuddi shu ob'ektga murojaat qiladilar. Har doim qiymati bilan (hatto bu qiymat mos yozuvlar bo'lsa ham) o'tadi.   Parametr sifatida qabul qilingan o'zgaruvchining qiymatini o'zgartirish uchun hech qanday usul yo'q, bu JS tomonidan referent orqali o'tishni qo'llab-quvvatlasa mumkin bo'lishi mumkin. Bu yerdan

Har doim xabarga qaram bo'lish uchun siz uni funksiya sifatida belgilashingiz mumkin:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;
var message = function(){
  return('the number is ' + offset);
}

console.log(message());   //this says 'the number is 0'

offset +=20;             //offset is changed to 20

console.log(message());  //this says 'the number is 20'
</div> </div>
1
qo'shib qo'ydi
"ibtidoiy turlari (sonlar, mag'lubiyatlar, va hokazo) qiymatdan o'tadi." Bu erda atamalar bilan ehtiyot bo'ling. "Değer orqali o'tish" va "mos yozuvlar bilan o'tish" odatda o'zgaruvchilar (/ parametrlari) o'rtasidagi munosabatni tavsiflaydi. O'zgaruvchan qiymatning haqiqiy "turi" ahamiyatsiz. qiymat turlarini (ibtidoiy) va mos yozuvlar turlari (ob'ektlar) deb o'ylashingiz mumkin, ammo bu "qiymatdan o'tish" bilan hech qanday aloqasi yo'q. en.wikipedia.org/wiki/Evaluation_strategy ga qarang.
qo'shib qo'ydi muallif Felix Kling, manba

"" ifodasi, raqam "+ offset faqat bir marta baholanadi. offset kodini necha marta yangilaganing muhim emas, JavaScript message va offset o'rtasidagi hech qanday aloqani kuzatib bormaydi, ular ikki xil o'zgaruvchilar.

Tavsiya etilganidek, o'zgaruvchining o'rniga xabarni ko'rsatish uchun funktsiyani ishlatishingiz mumkin.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;

function message() {
    return 'the number is ' + offset;
}

console.log(message());  
offset += 20;             
console.log(message());   
</div> </div>

Shunday qilib, xabar har safar qayta ko'rib chiqiladi.

1
qo'shib qo'ydi

"" ifodasi, raqam "+ offset faqat bir marta baholanadi. offset kodini necha marta yangilaganing muhim emas, JavaScript message va offset o'rtasidagi hech qanday aloqani kuzatib bormaydi, ular ikki xil o'zgaruvchilar.

Tavsiya etilganidek, o'zgaruvchining o'rniga xabarni ko'rsatish uchun funktsiyani ishlatishingiz mumkin.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var offset = 0;

function message() {
    return 'the number is ' + offset;
}

console.log(message());  
offset += 20;             
console.log(message());   
</div> </div>

Shunday qilib, xabar har safar qayta ko'rib chiqiladi.

1
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb