iBaffiPro ha scritto:
puoi fare delle prove ma ti accorgi che questo + non serve a nulla.
Allora:
dipende dalla funzione a cui passi il valore. Ci sono funzioni che applicano già una type coercion e altre no.
La funzione "globale" isFinite fa già internamente una type coercion al tipo numerico. Ma esiste anche Number.isFinite che è una versione più "stretta" e NON applica una type coercion. La sua documentazione su MDN dice:
In comparison to the global isFinite() function, this method doesn't first convert the parameter to a number.
Apri i developer tools di Firefox (o Chrome) e vai nella Console dove puoi scrivere espressioni js.
Number.isFinite("0")
dà false, perché NON è un Number.
Ma:
Number.isFinite(+"0")
dà true (qui ho fatto IO la type coercion a Number prima di passarlo alla funzione)
Quindi dipende solo dal contesto in cui si usa la espressione +xyz.
iBaffiPro ha scritto:
2) E' possibile che per deontologia il programmatore abbia deciso di scegliere di mettere il quantificatore ma che in questo caso non serva assolutamente a nulla?
Infatti. Anche secondo me non serve a nulla. Per un motivo molto semplice: l'obiettivo voluto era sostituire con "" (vuoto)
Ma sarebbe diverso se l'obiettivo fosse sostituire con qualcos'altro, ad esempio un bel "#"
Sempre dalla Console dei developer tools:
Con ? :
"1234ciao-".replace(/[^0-9\.\-]
?/gi, "#")
dà
"#1#2#3#4#####-#"
Ma senza ? :
"1234ciao-".replace(/[^0-9\.\-]/gi, "#")
dà
"1234####-"
vedi le differenze?
P.S. chiedi a
Toki di spostare la discussione nella sezione Javascript, poiché con Java non ci azzecca nulla ..