Merhaba arkadaşlar, JavaScript öğrenmeye başladım. Şu an fonksiyonlardayım ve neler yapabileceğimi kestirmeye keşfetmeye çalışıyorum, bir konuda yardıma ihtiyacım var.
function sayiUret(){
return Math.ceil(Math.random() * 50)
}
var sayi1 = sayiUret()
var sayi2 = sayiUret()
function sayiCarp(){
return sayi1*sayi2
}
function sonuc(){
console.log(sayiCarp())
}
Burada yapmak istediğim sayıUret fonksiyonu ile üretilen sayıyı sayiCarp fonksiyonu ile çarpıp sonuc fonksiyonu ile konsola yazdırmak. Browser konsolunda sonucu veriyor ancak sürekli aynı sayıları çarpıp aynı sonucu veriyor o yüzden Visual Studio'da deneyeyim dedim ancak konsola yazmıyor. Hata da almıyorum nerede yanlıs yapıyorum acaba?
Aynı sayıları vermesinin sebebi: Sayıları bir kez random olarak tanımlayıp sonrasında tekrar tekrar çarpmanız. Her seferinde random olarak hesaplatmanız gerekiyor.
Merhaba arkadaşlar, JavaScript öğrenmeye başladım. Şu an fonksiyonlardayım ve neler yapabileceğimi kestirmeye keşfetmeye çalışıyorum, bir konuda yardıma ihtiyacım var.
function sayiUret(){
return Math.ceil(Math.random() * 50)
}
var sayi1 = sayiUret()
var sayi2 = sayiUret()
function sayiCarp(){
return sayi1*sayi2
}
function sonuc(){
console.log(sayiCarp())
}
Burada yapmak istediğim sayıUret fonksiyonu ile üretilen sayıyı sayiCarp fonksiyonu ile çarpıp sonuc fonksiyonu ile konsola yazdırmak. Browser konsolunda sonucu veriyor ancak sürekli aynı sayıları çarpıp aynı sonucu veriyor o yüzden Visual Studio'da deneyeyim dedim ancak konsola yazmıyor. Hata da almıyorum nerede yanlıs yapıyorum acaba?
Random sayi ureten fonskiyonun set seed ozelligi yok Javascript'te. Ayni sequence'i yaratir ayni context icinde. O sebeple 1. ve 2. uretecegi random deger ayni seed icin hep ayni olacaktir, cunku aslinda random degil urettigi sayilar. Bu birinci aciklama.
Ikinci aciklama da, fonksiyonel programlama yaparken, global degiskenler uzerinden degil, fonksiyona parametre olarak verilenler uzerinden islem yapilir. Yoksa bir anlami kalmiyor fonksiyonel yapmanin. Yani senin sayiCarp() fonksiyonun aslinda sadece 2 global degiskeni carpiyor, halbuki parametre alip onu carpmasi lazim.
Asagidaki kodun etrafina html yazip, .html dosyasi olarak kaydedip browser ile ac. Her F5 'e basmanda farkli hesapladigini goreceksin. ( Cunku sequence degisiyor ).
Kod:
function sayiUret(){
return Math.ceil(Math.random() * 50)
}
function sayiCarp(x, y){
return x*y
}
var sayi1 = sayiUret();
var sayi2 = sayiUret();
var sonuc = sayiCarp(sayi1,sayi2);
console.log(sonuc);
Cevaplar için teşekkür ederim.Zamannda cevap verememiş olmamın sebebi yazım hatasından dolayı bir süreliğine yasaklanmamdı.Daha çok yolum var anlaşılan olsun pes etmek yok.
Cevaplar için teşekkür ederim.Zamannda cevap verememiş olmamın sebebi yazım hatasından dolayı bir süreliğine yasaklanmamdı.Daha çok yolum var anlaşılan olsun pes etmek yok.