반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터분석
- 컴퓨터과학
- 자료구조
- 컴퓨터비전
- 코딩
- 머신러닝
- I'm Sorry
- 클라우드컴퓨팅
- 프로그래밍언어
- 사이버보안
- 데이터베이스
- 2
- Yes
- 데이터구조
- 빅데이터
- 파이썬
- 인공지능
- 컴퓨터공학
- 소프트웨어공학
- 데이터과학
- 소프트웨어
- 웹개발
- 딥러닝
- 알고리즘
- 보안
- 프로그래밍
- 자바스크립트
- 버전관리
- 네트워크
- 네트워크보안
Archives
- Today
- Total
스택큐힙리스트
(a== 1 && a ==2 && a==3) 가 참이 될 수 있습니까? 본문
반응형
모더레이터 참고: 코드를 수정하거나 이 공지를 제거하는 유혹을 간직하십시오. 공백의 패턴은 질문의 일부일 수 있으므로 불필요하게 수정하지 마십시오. 공백은 무의미한 캠프에 속한다면 코드를 그대로 수용할 수 있어야 합니다.
(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