변수 앞에 더하기 기호의 목적은 무엇입니까?


262

이것은 실제로 간단한 질문처럼 들리지만 운이 없었습니다. 무엇 +d

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

방법?



3
같은 문제이지만 다른 페이지의 제목은 일반적인 경우를 설명하지 않습니다
지리학

답변:


312

+연산자는 객체의 숫자 표현을 반환합니다. 따라서 특정 경우에는 d0이 아닌 숫자 인지 여부를 나타내는 것으로 보입니다 .

여기를 참조 하십시오 . 그리고 의견에서 지적했듯이 여기 .




parseInt 함수를 사용하거나 더하기 연산자를 사용하여 문자열을 정수로 구문 분석하는 것이 더 효율적인지 궁금합니다.
acarlstein

1
어떻게 다른 .parseInt()가요?
Daniel W.

1
대답의 MDN 링크에서 @acarlstein : "단항 부정 (-)도 숫자가 아닌 숫자를 변환 할 수 있지만, 단항 더하기는 숫자 에 대해 다른 연산을 수행하지 않기 때문에 무언가를 숫자로 변환하는 가장 빠르고 선호되는 방법입니다. " (공식적인 답변 만)
0:01의


12

다른 답변에서 설명했듯이 변수를 숫자로 변환합니다. d가 숫자이거나 문자열 일 때 특히 유용합니다. 함수 그것은 숫자로 평가됩니다.

예 ( addMonths문제 의 기능 사용 ) :

addMonths(34,1,true);
addMonths("34",1,true);

다음은 +d모든 경우의 수를 평가합니다. 따라서 유형을 확인 d하고 숫자, 함수 또는 숫자로 변환 할 수있는 문자열 인지에 따라 다른 코드 경로 를 사용할 필요가 없습니다.


+daddMonths의 첫 번째 호출 예제를 숫자로 평가하지 않을 것이다
거스 크로포드에게

사실, 나는 이것을 쓸 때 내가 한 일을 모른다. +function(){...}농산물 것 NaN기능 평가하지
RubenLaguna

4
당신은 미친을 제거하기 위해 답변을 편집 할 수 있습니까? 꽤 혼란 스럽습니다.
Buh Buh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.