programing

함수 표현식 앞에 JavaScript 플러스 기호

randomtip 2022. 9. 5. 22:44
반응형

함수 표현식 앞에 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 연산자.

deletedelete 연산자는 개체에서 속성을 삭제합니다.

voidvoid 연산자는 식의 반환 값을 삭제합니다.

typeof연산자 유형에 따라 지정된 개체의 유형이 결정됩니다.

언급URL : https://stackoverflow.com/questions/13341698/javascript-plus-sign-in-front-of-function-expression

반응형