JavaScript Numarası & Dizi beyanı

oy
0

Ben aşağıdaki JavaScript kodu gerçek bir mantık alabilirim nasıl olduğunu anlamak için deneyin:

var x = 10;
var y = 20;
var result = x + y;
document.getElementById(demo).innerHTML = result;

link: https://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_add_strings4

Aşağıdaki kod ÇIKIŞ Ekleme operasyonda = 1020. Aklımda bir dize olarak iki sayının birleştirme çünkü doğru olduğunu düşünüyorum.

var x = 100;
var y = 10;
var z = x / y;   
document.getElementById(demo).innerHTML = z;

link: https://www.w3schools.com/js/tryit.asp?filename=tryjs_numbers_string1

Ancak aşağıdaki kod ÇIKIŞ Bölüm operasyonda = 10 & bir dize olarak bu iki Number sayamazsınız bu. Bu sayı olarak iki sayısı hesaplanır. **** herkes bunu açıkça anlaşılması olacağı için bana yardım edin. ****

Oluştur 02/09/2018 saat 05:05
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
0

Bunu senin için okumayı öneririm.

http://2ality.com/2013/04/quirk-implicit-conversion.html

Primative tipi sayısı:, valueOf (diğer tip İşlet) -> toString () -> TypeError

Primative tip Dize: İşlet diğer tip, toString () -> valueOf () -> TypeError

Cevap 02/09/2018 saat 05:53
kaynak kullanıcı

oy
0

JavaScript gevşek daktilo dildir. Bu, biz dizeleriyle matematik, (örneğin yapabileceği anlamına gelir "100" / "10" === 10) ve JavaScript otomatik olarak sayı olarak bu dizeleri yorumlamak gerektiğini düşünmesi.

O halde neden değil "10" + "20"30 eşit?

JavaScript (belki kötü) aynı operatör (kullanmaya karar +ek yanı sıra dize Ulama için). Bu da sayı benzeri dizeleri dizeleri olarak veya bu durumda sayı olarak yorumlanmalı ve dize birleştirme kazandı karar vermek zorunda anlamına gelir. Aslında, hatta "10" + 20ve 10 + "20"ve 10 + "2" + 0tüm verim olacak "1020". Bir dize varsa bir yerde , dize birleştirme kazanır.

Cevap 02/09/2018 saat 05:35
kaynak kullanıcı

oy
0
var a  = "1022";            //variable a&b takes a string.
var b = "2";     
var c = a/b;                //a and b are converted to number type implicitly 
                            //because strings have no function with '/'.
document.write(c + "<br>"); //prints division between a and b (a/b).
c = toString();             //converts c to string explicitly.
document.write(c);          //shows an error as i said string cant be divided!.

Yardımcı oldum bana bildirin!

Cevap 02/09/2018 saat 05:31
kaynak kullanıcı

oy
0

bağımsız değişkenler herhangi bir dizi ve "/" bir bölme işlemi ile ilişkili sadece "bölme işlemi varsa JavaScript içinde "+" operatörü birleştirme işlemi olarak kabul edilir.

Cevap 02/09/2018 saat 05:21
kaynak kullanıcı

oy
0

javascript olarak, bölünme operatörü implictly sayılara dizeleri dönüştürür ve bölme işlemlerini Ama eklenmesi için JavaScript dize ve gerçekleştirmek birleştirme olarak görmektedir.

Cevap 02/09/2018 saat 05:17
kaynak kullanıcı

oy
0

JavaScript olursa olsun verin verilerin ne tür size makul bir cevap vermek için elinden geleni yapar. İlk örnekte bu iki dizeleri ile + operatörü başvurduğunuz görür. Bu (birleştirme) yapmak için geçerli bir şey olduğundan, herhangi bir zorlama gerçekleştirilir - iki dizeleri birleştirilir.

İkinci örnekte bu iki dizeleri / operatörü başvurduğunuz görür. Bu yapmak için geçerli bir şey değil, ama numaralara o operatörü uygulanarak geçerli olacaktır ve dizeleri hem sayı olarak temsil edilebilir verdi, o yaptığı iştir. Bu sayılara dönüştürür ve sonra bu bölme yapar.

Bu oto zorlama (diğer dillerde olduğu gibi JavaScript türleri hakkında neredeyse bu kadar endişe gerekmez) çok uygun olabilir. Bazen sen sanmıyoruz sonuçları verebilir ki o da biraz tehlikeli olabilir, ancak zorlama uygulandığında nasıl ve anlamak aldıktan sonra, tehlike bazı azalır.

Cevap 02/09/2018 saat 05:17
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more