Javascriptda global var

Bu meni bezovta qiladi.

Hujjatning boshida qatorni belgilash:

 var idPartner;

 var myar = new Array();
 myar[0] = "http://site.com/"+idPartner;

Unvonga ko'ra, raqamni olish, sherikning idagi. Ajoyib. Biroq, buni muvaffaqiyatsiz qilmoqchi emasman:

 $.address.change(function(event) {
   idPartner = 3;
   alert(idPartner);
 }

Ok. U menga to'g'ri raqamni berib turishini ogohlantiradi, lekin uni sozlamaydi.

Nima bo'ldi?

Rahmat!

0
new Array o'rniga [] literal notation dan foydalaning. (Bu muammoni hal qilmaydi, lekin baribir yaxshiroq).
qo'shib qo'ydi muallif hugomg, manba
Myarda [0] belgilangan urlga id bilan kirishga harakat qilyapman, lekin ishlamayapti. Bu menga noma'lum.
qo'shib qo'ydi muallif Lucas Veiga, manba
Muammolarni jsfiddle.net saytida ko'paytirishni sinab ko'rsata olasizmi?
qo'shib qo'ydi muallif Alex Turpin, manba
ogohlantirish sizga to'g'ri raqamni bergan bo'lsa, u holda o'rnatildi! Men chalg'ib ketdim. Nima uchun siz buning o'rniga qo'yilgan emas deb o'ylaysiz?
qo'shib qo'ydi muallif Andy, manba
@ Lukas Veiga "var myar = [];" ni ishga tushirishni taklif qilaman; massivlar uchun.
qo'shib qo'ydi muallif Bakudan, manba
To'g'ri raqamni qanday qilib ogohlantirmoqda, lekin uni sozlamaslik kerakmi?
qo'shib qo'ydi muallif Jack, manba

4 javoblar

O'zgaruvchining qiymatini o'zgartirish, qator ichidagi qiymatlarni qayta o'rnatmaydi. Bu faqat JavaScript avtomatik ravishda qila olmaydi. Yangi identifikatorga ega bo'lish uchun qatorni qayta yaratishingiz kerak bo'ladi. Idni o'z ichiga olgan qatorda qadriyatlarni oldindan belgilash o'rniga, qatorni ishlatadigan qiymatga ID qo'sha olasizmi?

Tahrirlash: Masalan, siz shunday qilasiz:

var myArray = [];
var myId = 0;
myArray[0] = "http://foo.com/id/";

va qatordan qiymatni ishlatish kerak bo'lganida, buni amalga oshiradi:

var theVal = myArray[0] + myId;
4
qo'shib qo'ydi
Kunning o'zida ALGOLda bu kabi narsalarning bajarilishiga yo'l qo'ygan o'tish nomidan variant bor edi. G'alati, a?
qo'shib qo'ydi muallif hugomg, manba
Ajoyib. Bu shundaymi? Uni men uchun istagan narsasi bilan belgilash uchun funktsiya yaratdim. Rahmat!
qo'shib qo'ydi muallif Lucas Veiga, manba

Buni ko'ring:

var myvar = ["http://site.com/"];


$.address.change(function(event) {
   myvar[1] = 3;
 }

keyin full url kerak bo'lgan myvar.join() dan foydalaning.

1
qo'shib qo'ydi

Bu erda muammolar qatorida

myar[0] = "http://site.com/"+idPartner;

.. siz nusxa ko'chirish degan natija beradi.

Shu sababli, keyinchalik idPartner sozlamalari o'rnatilganda, bundan avval kopyalanan dizgesinde hech qanday ta'sir bo'lmaydi. Bunday ta'sirdan qochish uchun idPartner o'zgaruvchan yangilanishlarini yoki siz ob'ektni yaratganda va uni kerak bo'lganda baholashingiz mumkin bo'lsa, har doim mag'lubiyatni qayta yaratishingiz mumkin ...

var MyObject = function(){
   this.idPartner = 0; //default value
};

MyObject.prototype.getUrl = function(){
   return "http://site.com/" + this.idPartner;
};

Shu tarzda uni ishlatishingiz mumkin

var myGlblUrlObj = new MyObject();

$.address.change(function(event){
   myGlblUrlObj.idPartner = ... /setting it here
});

Keyinchalik keyinchalik to'g'ri urlni ishlatishingiz mumkin

myGlblUrlObj.getUrl();

Keling, bu sizning vaziyatingizning murakkabligiga bog'liq. Ehtimol, tavsiya etilgan qator echimining ham ishlashi mumkin, garchi men uni ob'ektda yaxshiroq qayta ishlash uchun joylashtirmoqni afzal ko'raman.

0
qo'shib qo'ydi
myar[0] = "http://site.com/" + idPartner;

Ushbu qatordan so'ng myar [0] = "http://site.com/undefined" va uning o'zgaruvchisi idPartner bilan hech qanday aloqasi yo'q.

Shunday qilib, keyin idPartner qiymatini o'zgartirish myar [0] qiymatiga ta'sir qiladi.

myar [0] qiymatini o'zgartiring.

0
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