Patrząc na jslint code conventions Widziałem ten wiersz:Co robi ta linia javascript?
total = subtotal + (+myInput.value);
Jaki jest cel drugi „+”?
Patrząc na jslint code conventions Widziałem ten wiersz:Co robi ta linia javascript?
total = subtotal + (+myInput.value);
Jaki jest cel drugi „+”?
Jednoargumentowy plus zapewnia kompletność w porównaniu ze znanym unarnym minusem (-x). Jednak ma to efekt uboczny, powoływać tutaj, odlewania myInput.value na wiele, jeśli jest to coś innego, takich jak ciąg znaków:
alert(1+'2'); // 12
alert(1+(+'2')); // 3
To się nazywa „jednoargumentowy operator +”, może być używany jako szybki sposób na wymuszenie przekonwertowania zmiennej na liczbę, aby mogła być używana w operacji matematycznej.
Znak + oznacza typografię do liczby, jak powiedzieli inni. Jest tam potrzebny, ponieważ dane wejściowe formularza są zawsze wartościami łańcuchowymi, a dodanie łańcucha do innej zmiennej łączy je razem w nowy ciąg, nawet jeśli ciąg wygląda jak liczba.
Numer unary + operator zmienia się w liczbę.
Operator jednoargumentowy plus jest, mówiąc arytmetycznie, odlotem. Ale podobnie jak wszystkie inne czysto arytmetyczne operatory, przekształci to jego argument w typ liczby JavaScript i dlatego może być używany jako skrót dla jawnej obsady.
Jawne rzutowanie tekstu w języku JavaScript odbywa się przez wywołanie odpowiednich funkcji konstruktora bez użycia za pomocą operatora new
.
Przykładowo
Number(foo)
przekształci foo
na pierwotną numeru typu, natomiast new Number(foo)
się dodatkowo do utworzenia obiektu opakowującym prymitywne i odpowiada zatem
Object(Number(foo))
podobny do tego użycie +
jest użycie !!
do konwersji na typ boolowski.
Dzięki, nie znałem tego zapisu. Zakładam, że jest to w zasadzie stenografia dla parseInt()? –
Oni nie są tacy sami, Luke, zobacz tutaj, aby uzyskać więcej informacji: http://alexle.net/archives/290 –
Oczywiście, będzie bliżej "parseFloat". + -casting obsługuje pełne liczby literowe liczb zmiennoprzecinkowych, w tym takie dziwactwa, jak + "Infinity". – bobince