작성
·
254
0
if(Number(activeLi) < 0){
activeLi = Number(activeLi) + 260;
//왼쪽에 있던 카드가 오른쪽으로 갔다면, 다시 왼쪽으로 갈 수 있도록 PREV 버튼 활성화
slidePrev.style.color = '#2f3059';
slidePrev.classList.add('slide-prev-hover');
slidePrev.addEventListener('click',transformPrev);
if(Number(activeLi) === 0){
slideNext.style.color = '#cfd8dc';
slideNext.classList.remove('slide-prev-hover');
//이벤트처리. 클릭을 눌러도 더이상 동작하지 않게.
slideNext.removeEventListener('click', transformPrev);
}
}
let activeLi = classList.getAttribute('data-position');
activeLi에 속성을 가져오고 if문에서 Number를 꼭 써야한다는 것이 정확하게 이해가 잘 안가요...
Number()로 형변환을 하지 않으면 어떻게 되나요 ?
어차피 index.html에서 data-position의 값으로 숫자를 지정한거 아닌가요?
<ul class="class-list" data-position="0">
쌍따옴표로 감싸면 다 문자로 인식되는건가요?
강의를 띄엄띄엄봐서 ㅠㅠ 헷갈립니다...
답변 1
0
안녕하세요. 답변 도우미입니다.
웹에서 속성 값은 항상 문자열로 반환됩니다. 따라서 data-position="0"
의 값을 가져오면 "0"이라는 문자열이 반환됩니다.
JavaScript에서 문자열과 숫자의 연산은 조심해야 합니다. 예를 들어, 문자열 "5"와 숫자 3을 더하면, JavaScript는 자동으로 문자열 연결을 수행하여 "53"이라는 결과를 반환합니다. 반면, 숫자 5와 숫자 3을 더하면, 8이라는 숫자가 반환됩니다.
여러분의 코드에서 Number(activeLi) < 0
과 같은 조건을 확인할 때, activeLi
가 문자열로 되어 있다면 예기치 않은 동작이 발생할 수 있습니다. 따라서 Number()
를 사용하여 activeLi
를 숫자로 변환해주는 것이 보다 안전할 수는 있습니다.
감사합니다~