함수 표현식 앞에 JavaScript 플러스 기호
즉시 호출되는 함수에 대한 정보를 찾고 있었는데, 어느 곳에서 우연히 이 표기법을 발견했습니다.
+function(){console.log("Something.")}()
누가 설명 좀 해줄래?+
함수의 의미/실행 앞에 서명할 것인가?
파서가 다음 부품을 강제로 처리하도록 합니다.+
표현으로서이는 일반적으로 즉시 호출되는 기능에 사용됩니다. 예를 들어 다음과 같습니다.
+function() { console.log("Foo!"); }();
미포함+
여기서 파서가 스테이트먼트(식 또는 여러 개의 비반복 스테이트먼트일 수 있음)를 기대하는 상태일 경우, 그 워드는function
함수식이 아니라 함수 선언의 시작처럼 보이기 때문에()
(위의 행 끝에 있는 것) 뒤에 구문 오류가 있습니다(이 예에서는 이름이 없는 것과 같습니다).를 사용하여+
이 명령어를 함수식으로 합니다.즉, 이름은 옵션이며 함수에 대한 참조가 됩니다.이러한 참조는 호출할 수 있으므로 괄호는 유효합니다.
+
옵션 중 하나일 뿐입니다.또,-
,!
,~
, 또는 다른 단항 연산자 거의.또는 괄호를 사용할 수도 있습니다(이것은 보다 일반적이지만 구문적으로는 정확하지 않습니다).
(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());
@TJCrowder의 답변의 자회사,+
이 SO 답변에서 설명한 바와 같이 값을 강제로 수치로 캐스팅하는 데 사용됩니다.이 경우, 이것을 '유니리 플러스 연산자'라고 부릅니다(구글의 용이성을 위해).
var num = +variant;
따라서 함수 앞에서 함수의 결과를 숫자로 해석하도록 강제하는 방법이 될 수 있습니다.아직 그렇게 될 것 같지는 않지만, 이론적으로 JIT는 그것을 수치 전용 함수 등으로 컴파일 할 수 있다.단, 더 큰 식에서 사용할 때 단항 플러스가 연결 상태가 되지 않도록 하려면 다음과 같은 괄호가 필요합니다.
blah + (+(function(){ var scope; return "4"; })());
즉, 어떤 방법으로든 함수 결과를 사용함으로써 구문 오류를 방지할 수 있습니다.
또한 다음 명령을 사용하여 반환 값에 관심이 없다는 것을 엔진에 지시할 수 있습니다.void
연산자:
void function() { console.log("Foo!"); }();
물론 전체를 교정하는 것도 그 목적에 도움이 됩니다.
솔루션 및 출처
그+
실제로는 Unary plus라고 불리며 Unary plus라고 불리는 그룹의 일부이며, (Unary plus)는 문자열 및 기타 표현을 숫자(정수 또는 플로트)로 변환하는 데 사용됩니다.
단항 연산은 하나의 피연산자(즉, 단일 입력)만 있는 연산입니다.이는 2개의 오퍼랜드를 사용하는 바이너리 연산과 대조됩니다.
기본 사용법:
const x = "1";
const y = "-1";
const n = "7.77";
console.log(+x);
// expected output: 1
console.log(+n);
// expected output: 7.77
console.log(+y);
// expected output: -1
console.log(+'');
// expected output: 0
console.log(+true);
// expected output: 1
console.log(+false);
// expected output: 0
console.log(+'hello');
// expected output: NaN
언제?+
부호는 변수, 함수 또는 반환된 문자열 표현 앞에 배치되며 출력은 정수 또는 플로트로 변환됩니다.단항 연산자(+
)는 문자열 이외의 값도 변환합니다.true
,false
,그리고.null
.
고급 용도
위에서 설명한 기능을 올바르게 사용하는 방법은 다음과 같습니다.
+function(){return "3.141"}()
// expected output: 3.141
사용하는 것을 좋아합니다.+
돌다new Date()
다음과 같이 타임스탬프에 오브젝트를 지정합니다.
+new Date()
// expected output: 1641387991035
기타 단항 연산자
-
단항 부정 연산자는 피연산자를 숫자 유형으로 변환한 다음 부정합니다.
~
비트 단위 NOT 연산자.
!
논리 NOT 연산자.
delete
delete 연산자는 개체에서 속성을 삭제합니다.
void
void 연산자는 식의 반환 값을 삭제합니다.
typeof
연산자 유형에 따라 지정된 개체의 유형이 결정됩니다.
언급URL : https://stackoverflow.com/questions/13341698/javascript-plus-sign-in-front-of-function-expression
'programing' 카테고리의 다른 글
Vue.js의 루트 요소에서 내보낸 이벤트를 재생하려면 어떻게 해야 합니까? (0) | 2022.09.05 |
---|---|
mariaDb, mySQL을 사용하여 반경 내의 모든 공간 유형 지점(km)을 가져옵니다. (0) | 2022.09.05 |
MariaDB Connector/J 및 AWS RDS Aurora에서 이상한 간헐적 문제 발생 (0) | 2022.09.05 |
MySQL DATE_FORMAT 또는 DateTime.strftime을 통한 DateTime 문자열 (0) | 2022.09.05 |
Python: 원트라이 멀티 예외 (0) | 2022.09.05 |