2011-07-13 25 views
130

değişkeninden önceki sembol, bu gerçekten basit bir soru gibi geliyor ama hiç şansım olmadı.javascript: artı

function addMonths(d, n, keepTime) { 
    if (+d) { 

+d ne anlama gelir?

+0

Mümkün yinelenen [artı işareti ne 'return + new Date' içinde ne yapar?] (Http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return- new-date) – nawfal

+1

Aynı konu ama diğer sayfanın başlığı genel durumu açıklamıyor, bu durum – geotheory

+0

'un olası nüshasını yapıyor [Ne yaparsın? +… 'JavaScript'i kastediyor] (https://stackoverflow.com/q/15129137/1048572) – Bergi

cevap

158

+ İşleci, nesnenin sayısal temsilini döndürür. Dolayısıyla, özel durumunuzda, d'nin sıfır olmayan bir sayı olup olmadığını tahmin etmek görünecektir.

Referans here. Ve yorumlarda belirtildiği gibi, here.

+4

Dokümanlar: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Arithmetic_Operators#.2b_(Unary_Plus%29 –

+1

Doğru, Paul. @amateur, ayrıntılar burada: https: // geliştirici .mozilla.org/tr/JavaScript/Referanslar/Operatörler/Arithmetic_Operators # .2b_ (Unary_Plus) –

+12

Yasaklanmış bir JavaScript yarışması için herkes? –

11

Sayısal bir ifade sağlayan tek bir "+" işlecidir. d*1 ile aynı olurdu, inanıyorum.

9

Diğer cevaplarda açıklandığı gibi, değişkeni bir sayıya dönüştürür. D, bir sayı veya işlevi işlevinin bir sayı için değerlendirilebildiği durumlarda özellikle yararlıdır.

Örnek (söz konusu addMonths fonksiyonu kullanılarak):

addMonths(function(){return x*y;}, 1, true); 
addMonths(34,1,true); 
addMonths("34",1,true); 

sonra +d her durumda bir dizi değerlendirecektir. Böylece, d'un bir sayı mı, bir işlev mi yoksa bir sayıya dönüştürülebilen bir dize mi olduğuna bağlı olarak, türü denetleme ve farklı kod yolları alma gereksinimini ortadan kaldırır.

+0

'+ d', addMonths –

+0

'un ilk çağırma örneğiyle bir sayıya doğru değerlendirmez, bunu yazdığımda ne yaptığımı bilmiyorum. '+ function() {...}' 'NaN' işlevi değerlendirmeyecek – ecerulm

İlgili konular