programing

자바스크립트에서 이중부정(!!!) - 목적은?

subpage 2023. 10. 31. 22:08
반응형

자바스크립트에서 이중부정(!!!) - 목적은?

중복 가능:
자바스크립트에서 !!(not) 연산자는 무엇입니까?

다음 코드를 발견했습니다.

function printStackTrace(options) {
    options = options || {guess: true};
    var ex = options.e || null, guess = !!options.guess;
    var p = new printStackTrace.implementation(), result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}

그리고 왜 이중부정을 했는지 궁금할 수 밖에 없었습니다.그리고 같은 효과를 얻을 수 있는 대안이 있습니까?

(코드는 https://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js.) 에서 나옵니다.

부울에 캐스트됩니다.첫번째!는 값을 다음과 같이 변환하여 한 번 부정합니다.

  • undefined로.true
  • null로.true
  • +0로.true
  • -0로.true
  • ''로.true
  • NaN로.true
  • false로.true
  • 다른 모든 표현은 다음과 같습니다.false

그다음에 다른 하나는!그것을 다시 부정합니다.부울에 대한 간결한 캐스트, ToBoolean과 정확히 동일한 이유는 다음과 같습니다.!부정으로 정의됩니다.그러나 여기서는 그것이 단지 조건 연산자의 조건으로 사용될 뿐이고, 그것은 같은 방식으로 진실성을 결정할 것이기 때문에 그것은 불필요합니다.

var x = "somevalue"
var isNotEmpty = !!x.length;

그것을 산산조각 내자.

x.length   // 9
!x.length  // false
!!x.length // true

그래서 "truethi" "falsey" 값을 부울로 변환하는 데 사용됩니다.


다음 값은 조건문에서 false에 해당합니다.

  • 거짓의
  • 귀무의
  • 미정의
  • 빈 문자열""(\'')
  • 숫자 0
  • 숫자 NaN

다른 모든 은 true와 같습니다.

이중 부정은 "truthy" 또는 "falsey" 값을 부울 값으로 바꿉니다.true아니면false.

대부분의 사람들은 진실성을 테스트로 사용하는 것에 익숙합니다.

if (options.guess) {
    // Runs if 'options.guess' is truthy,
}

그러나 그것이 반드시 다음을 의미하는 것은 아닙니다.

options.guess === true   // Could be, could be not

참 부울 값에 "truthy" 값을 강제로 적용해야 하는 경우,!!다음을 수행하는 편리한 방법입니다.

!!options.guess === true   // Always true if 'options.guess' is truthy

언급URL : https://stackoverflow.com/questions/10467475/double-negation-in-javascript-what-is-the-purpose

반응형