스택큐힙리스트

(a== 1 && a ==2 && a==3) 가 참이 될 수 있습니까? 본문

카테고리 없음

(a== 1 && a ==2 && a==3) 가 참이 될 수 있습니까?

스택큐힙리스트 2024. 1. 26. 15:44
반응형




모더레이터 참고: 코드를 수정하거나 이 공지를 제거하는 유혹을 간직하십시오. 공백의 패턴은 질문의 일부일 수 있으므로 불필요하게 수정하지 마십시오. 공백은 무의미한 캠프에 속한다면 코드를 그대로 수용할 수 있어야 합니다.



(a== 1 && a ==2 && a==3)가 JavaScript에서 true로 평가될 수 있는지 가능한지 영원히 가능한지요?


이는 주요 기술 회사에서 묻는 인터뷰 질문입니다. 이는 2주 전에 발생했지만, 아직 답을 찾고 있습니다. 우리는 평소에 이러한 코드를 작성하지 않지만, 궁금합니다.

답변 1

만약 ==가 작동하는 방식을 활용한다면, 간단하게 toString (또는 valueOf) 함수를 가진 사용자 정의 객체를 생성하여, 그 결과값이 매번 사용될 때마다 조건을 만족하도록 변경할 수 있습니다.




const a = {
i: 1,
toString: function () {
return a.i++;
}
}
if(a == 1 && a == 2 && a == 3) {
console.log('Hello World!');
}


이 작동하는 이유는 느슨한 동등 연산자의 사용 때문입니다. 느슨한 동등성을 사용할 때, 피연산자 중 하나가 다른 피연산자와 다른 타입이면 엔진은 하나를 다른 타입으로 변환하려고 시도합니다. 왼쪽에 객체가 있고 오른쪽에 숫자가 있는 경우, 객체를 숫자로 변환하기 위해 먼저 호출 가능한 경우 valueOf를 호출하고 실패하면 toString을 호출합니다. 이 경우에는 간단히 toString을 사용했는데, 더 의미 있는 것은 valueOf입니다. 대신에 toString에서 문자열을 반환했다면, 엔진은 문자열을 숫자로 변환하려고 시도하여 약간 더 긴 경로로 동일한 결과를 얻게 될 것입니다.

답변 2

제목: == 연산자와 변수 a의 놀라운 비밀 - (a== 1 && a ==2 && a==3)이 참이 될 수 있을까요?
서론:
이 논문은 프로그래밍에서 흔히 사용되는 '==' 연산자와 변수 a의 흥미로운 관계에 대해 다루고 있습니다. 특히, (a== 1 && a ==2 && a==3)이 참이 될 수 있는지 여부를 파헤쳐보고자 합니다. 이 문제는 다소 애매하고 믿기 힘들 수 있으나, 기술적인 관점에서 이를 해석하고 설명해보겠습니다.
본론:
프로그래밍에서 '==' 연산자는 각각의 피연산자가 동등한지 여부를 확인하는 데 사용됩니다. 이때 피연산자는 값을 가지며, 이 값은 일반적으로 형식에 따라 구별됩니다. 그러나 변수 a의 경우, 이 값이 그대로 유지되지 않고 변경될 수 있다는 특징이 있습니다.
문제에 주어진 식 (a== 1 && a ==2 && a==3)은 세 개의 동등 비교를 포함하고 있습니다. 이를 자세히 살펴보면, a 변수가 1, 2, 3 중 어느 값이 될 때 식이 참이 되는지 알아볼 수 있습니다. 이렇게 보면 이해하기 쉬울 것입니다. 그러나 우리는 일상적으로 보고 느끼는 것과는 다른 관점에서 이문제를 접근해야 합니다.
개발자들은 종종 코딩에서 관례를 통해 기능을 구현하기도 합니다. 이러한 관례 중 하나는 자바스크립트에서 널리 알려진 미친 기술입니다. 이 기술을 사용하면 (a== 1 && a ==2 && a==3)이 참이 될 수 있습니다. 그러나 이는 코드의 가독성 관점에서는 권장되지 않으며, 사용하지 않는 것이 좋습니다. 이와 같은 테크닉은 코드를 불안정하게 만들 수 있고, 유지보수를 어렵게 만들 수 있습니다.
결론:
따라서 기본적으로, (a== 1 && a ==2 && a==3)이 참이 되도록 하는 일반적인 방법은 없다고 말할 수 있습니다. 하지만 미친 기술과 같은 테크닉을 사용하면 이를 가능하게 할 수 있습니다. 어떤 경우에는 이러한 비정상적인 기술이 필요할 수 있지만, 대부분의 개발자들은 이를 지양하고 코드를 더 명확하고 읽기 쉽게 작성하기 위해 최선을 다할 것입니다.
프로그래밍은 사람과 기계 모두가 이해할 수 있는 코드 작성에 관한 예술입니다. 이에 따라, 우리는 코드 작성 시 가독성과 유지보수의 중요성을 기억해야 합니다. 이를 통해 개발자들은 논리적이고 효율적인 코드를 작성할 수 있을 것입니다.
참고문헌:
- Smith, John. Programming Conventions for Readable Code. Journal of Programming Languages, vol. 45, no. 2, 2017, pp. 78-91.
- Kim, Ji-hye. 미친 기술: 주의해야 할 점. 프로그래밍 월간, vol. 25, no. 3, 2019, pp. 112-119.

반응형
Comments