2013-03-17 39 views
7

Neden 2..toString()2 döndürüyor, ancak 2.toString() bu hatayı atar?Neden 2..toString() çalışıyor?

Örnek: 2.2.0 olarak ayrıştırılır, çünkü bu

console.log(2..toString()); // prints 2 

// Firefox throws the error 
// `SyntaxError: identifier starts immediately after numeric literal` 
console.log(2.toString()); 

var x = 2; 
console.log(x.toString()); // prints 2 

// Firefox throws the error 
//`TypeError: XML descendants internal method called on incompatible Number` 
console.log(x..toString()); 
+0

(2) .toString() beklenen sonucu verir. (bir cevap değil, bir test ...) –

+0

IE de hata veriyor mu? – DevelopmentIsMyPassion

+0

Biliyorum ama neden 2..toString() 'de çalışıyor? –

cevap

4

2 çağıracağı için herhangi bir yöntem yoktur, sadece bir sayıdır.

2.

dolayısıyla yöntemi olabilir, bir amacı bir dizi (yani, '2.0') zorlanması edilebilir.

Sadece 2.toString() elbette mantıklı değil 2.0tostring() olarak ayrıştırılır. İki işlendiğinden nasıl

Looking: http://jsparse.meteor.com/

+3

bu hangi araç? –

+0

** Bulunan araç burada (http://jsparse.meteor.com/)** –

+2

şemaların ilk işaretin yanlış olduğunu nasıl açıkladığını açıklayabilir misiniz? her ikisi de bir sayı kutusunda görünüyor. Diyagramların nasıl yardımcı olduğunu göremiyorum ... lütfen cevap verebilir misiniz? –

8

, yani 2..toString() geçerli bir ifade olan, 2.0.toString() eşdeğerdir.

Diğer yandan, 2.toString(), bir sözdizimi hatası olan 2.0toString() olarak ayrıştırılır.

+0

'2.'," 2 "değerini atar. –

+0

@ G.Kayaalp, yup, her ikisi de '2 === 2.0' ve' 2. === 2.0 '' true'. –

+0

, şeytanın avukatı olmaktan nefret ediyor, ama '2. === 2 '' true' da –

1

2..toString() olacaktır:

enter image description here

bu arada burada oluşturmak için aracı

enter image description here

vs 2.0.toString() olarak yorumlanmıştır.

Aslında 2. bir sayıdır: console.log(typeof 2.); vermek olacaktır: sayı

4
2.toString() 

tercüman 2 görür ve düşünür "oh bir numara!" Sonra, noktayı görür ve "ondalık bir sayı!" Diye düşünür. Ve sonra, bir sonraki karaktere gider ve bir t görür ve kafası karışır. "2.t geçerli bir ondalık sayı değil" diye yazıyor, bir sözdizimi hatası veriyor.


2..toString() 

tercüman 2 görür ve düşünür "oh bir numara!" Sonra, noktayı görür ve "ondalık bir sayı!" Diye düşünür. Sonra, başka bir nokta görür ve düşünür, "Oh, sanırım bu bizim numaramızın sonu oldu. Şimdi, bu nesnenin özelliklerine bakıyoruz (sayı 2.0)." Ardından, 2.0 nesnesinin toString yöntemini çağırır.

İlgili konular