IT

식 앞에 칠데는 무엇을 합니까?

itgroup 2023. 1. 12. 22:11
반응형

식 앞에 칠데는 무엇을 합니까?

var attr = ~'input,textarea'.indexOf( target.tagName.toLowerCase() )
           ? 'value'
           : 'innerHTML'

대답에서 봤지만 본 적이 없어요

그것은 무엇을 뜻하나요?

~는 오퍼랜드의 모든 비트를 플립하는 비트 연산자입니다.

를 들어,가 「」인 는, 「」입니다.1IEEE 754 플로트의 바이너리 표현(JavaScript가 숫자를 처리하는 방법)은 다음과 같습니다.

0011 1111 1111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

★★★★★★★★★★★★★★★★★.~자바스크립트 32개

0000 0000 0000 0000 0000 0000 0000 0001

음수이면 2의 보수로 저장됩니다: 모든 비트를 반전하고 1을 더합니다.

...그리고 모든 조각들을 뒤집는다...

1111 1111 1111 1111 1111 1111 1111 1110

그럼 그게 무슨 소용이죠?언제 쓸 수 있을까?

그것은 꽤 많은 용도가 있다.낮은 수준의 글을 쓸 때는 편리합니다.응용 프로그램을 프로파일하고 병목 현상을 발견하면 비트 단위의 트릭(더 큰 가방에서 가능한 도구 중 하나)을 사용하여 성능을 향상시킬 수 있습니다.

또, (일반적으로) 애매한 트릭이기도 합니다.indexOf()는 반환값을 truthy(위조발견되지 않음)로 검출하여 32비트로 숫자를 잘라내는 부작용(및 소수점 이하를 2배로 하는 것)으로 자주 사용합니다.Math.floor()( 일일 ( ( )

나는 그것이 무엇에 사용되는지 즉시 명백하지 않기 때문에 불분명하다고 말한다.일반적으로 코드를 읽는 다른 사람에게 명확하게 전달하기를 원합니다.사용 중~멋있어 보일 수도 있고, 보통 너무 영리해서 그 자체로 좋을 수도 있어요.:)

또한 JavaScript에 및 이 탑재되어 있기 때문에 관련성도 낮아집니다.이 값은 부울 값을 반환합니다.타깃 플랫폼이 지원하는 경우 문자열 또는 배열에 값이 있는지 테스트하기 위해 이 옵션을 사용하는 것이 좋습니다.

「 」의 에 indexOf()식을 사용하면 직접 반환되는 숫자 인덱스 대신 진부한/경쾌한 결과를 얻을 수 있습니다.

이 "Dreturn"인 -1 , , , 「 」~-10-11번으로 하다0보다 크거나 같은 값은 0이 아닌 결과가 됩니다.thus따는

if (~someString.indexOf(something)) {
}

야기하다if"something이 " ""에때 실행하는 코드입니다.「 」를 ,.indexOf()부울값으로 직접 지정하면 0이 반환되는 경우가 있기 때문에 작동하지 않습니다('something'이 문자열의 선두에 있을 때).

물론 이 방법도 유효합니다.

if (someString.indexOf(something) >= 0) {
}

훨씬 덜 신비롭죠

다음과 같은 경우도 있습니다.

var i = ~~something;

「 」의 ~연산자를 두 번 사용하면 문자열을 32비트 정수로 빠르게 변환할 수 있습니다. 번째 ★★★★★★★★★★★★★★.~이 이루어지며, 두 는 ""로 변환됩니다.~비트를 플립백합니다.수 하면, 은 이 연산자를 받을 수 있습니다.NaN결과적으로.(편집 - 실제로는 두 번째입니다).~먼저 적용되지만 이해하실 수 있습니다.)

~Bitwise NOT 연산자,~x 비슷비슷하다-(x+1)그게 좀 더 이해하기 쉽죠. ★★★★★★★★★★★★★★★★:

~2;    // -(2+1) ==> -3

-(x+1)-1하고, 「」를 할 수 .0

말하면, 「 」입니다.~와 함께 '가짜'가 됩니다).false부에서0value 만 값 의) 값만 값-1입력 값, 다른 트러스트 값을 입력합니다.입력값(그렇지 않은 경우)을 지정합니다.

우리가 알고 있는 대로-1는 일반적으로 Sentinel 값이라고 불립니다.반환되는 많은 함수에 사용됩니다.>= 0성공을 위한 가치관과-1C언어 실패에 대한 설명입니다.JavaScript에서 반환값과 동일한 규칙입니다.

이러한 방법으로 다른 문자열의 서브스트링 유무를 확인하는 것이 일반적입니다.

var a = "Hello Baby";

if (a.indexOf("Ba") >= 0) {
    // found it
}
if (a.indexOf("Ba") != -1) { 
    // found it
}

if (a.indexOf("aB") < 0) { 
    // not found
}
if (a.indexOf( "aB" ) == -1) { 
    // not found
}

이렇게 게 더 것 요.~와 같이

var a = "Hello Baby";

~a.indexOf("Ba");         // -7   -> truthy
if (~a.indexOf("Ba")) {   // true
    // found it
}

~a.indexOf("aB");         // 0    -> falsy
!~a.indexOf("aB");        // true
if (!~a.indexOf( "aB" )) {  // true
    // not found
}

You Don't Know JS: 유형 & 문법 by Kyle Simpson

~indexOf(item)자주 등장하고, 여기서의 답변은 훌륭합니다만, 아마 어떤 사람들은 그것을 어떻게 사용하는지 알고 이론을 "수정"할 필요가 있을 것입니다.

   if (~list.indexOf(item)) {
     // item in list
   } else {
     // item *not* in list
   }

tilde 트릭을 사용하여 truthy 값을 생성하는 것을 고려하는 사용자용indexOf그 결과, 위에서 메서드를 대신 사용하는 것이 보다 명확하고 마법이 적습니다.

'hello world'.includes('hello') //=> true
'hello world'.includes('kittens') //=> false

ES 2015의 새로운 표준 방식이기 때문에 구형 브라우저에서는 작동하지 않습니다.이것이 중요한 경우 String.protype.includes polyfill 사용을 고려해 주십시오.

이 기능은 동일한 구문을 사용하는 어레이에서도 사용할 수 있습니다.

['apples', 'oranges', 'cherries'].includes('apples') //=> true
['apples', 'oranges', 'cherries'].includes('unicorns') //=> false

오래된 브라우저 지원이 필요한 경우 Array.protype.에는 polyfill이 포함되어 있습니다.

1의 보완 연산자(~)는 단항 연산자로 0을 1로, 1을 0으로 변환합니다.

a = 10 = 1010 (Binary)

~a = ~1010
   = -(1010 + 1)
   = -(1011)
   = -11 (Decimal)

Binary number        1’s complement
              
000                    111

001                    110

010                    101

1의 덧셈의 주된 용도는 부호 있는 이진수를 나타내는 것입니다.이 외에도 덧셈, 뺄셈 등 다양한 산술 연산을 할 때도 사용된다.

부호 있는 이진수 표현에서는 양수와 음수를 모두 표현할 수 있습니다.

언급URL : https://stackoverflow.com/questions/12299665/what-does-a-tilde-do-when-it-precedes-an-expression

반응형