앞서 day 02과제에 대해서 몇가지 추가적인 JS의 함수 및 연산자들의 작동 방식 및 특징을 살펴보자.
num1 == ""
|| !num1
과 같은 방식으로 숫자가 아닌 공백을 판별 할 수 있다.
input_X.value = "null"
input창의 내용을 초기화
alert()
parseInt()
Number(text)
input_X.focus()
text.indexOf("hello")
-1
이 반환된다.eval(num1 + operation + num2)
1
, +
, 3
이 연산되어 4라는 값이 반환된다.num1 = 1234
"안녕하세요"+eval("'"+num1+"'")
결과 : "안녕하세요1234"
arr.splice(2,1)
형태를 보면
다음과 같이 있는데 분리해서 보면 보기 쉬울 것이다.
이렇게 forEach내부에 함수가 적용되어 있는 것을 확인할 수 있다.
여기서 첫번째 값인 data는 배열 내 요소를 뜻하고 index는 배열 내 번지(index)를 뜻한다.
이러한 forEach구문은ES6 화살표 함수 표현을 사용해서 다음과 같이 간단한 형태로 표현할 수 있다.
var arr = ['오징어','꼴뚜기','대구','명태'];
var newHtml = arr.map(function(item, index) {
return "<b>"+item+"</b>";
});
document.getElementById("demo").innerHTML = newHtml;
이또한 forEach와 동일하다. 배열에 대해서 반복적인 함수를 적용해야 할 때 사용한다. 해당 배열 내 요소에 대해서 해당 function함수 내 수식인 return"<b>"+item+"</b>"
이 반복되며 newHtml
에 저장된다.
이후 수행되는 코드는 해당 생성된 HTML을 현재 HTML에 적용하는 것이다.
배열 내부와 같이 ,
콤마가 함께 추가되는 것을 확인할 수 있다.
var obj = {}
${}
연산자를 사용한다.여담으로.. velog에서 빽틱은
회색 사각형
템플릿 문자열을 만드는데 사용되기에 필기를 위해 입력할 때 템플릿 문자열로 인식해 버려서 당황했다.
// 숫자를 스트링로 바꾸기
var numberA = 2
numberA += "";
alert(typeof numberA); // Result : string
// 스트링을 숫자로 바꾸기
stringA = "2"
stringA *= 1;
alert(typeof stringA); // Result : number
해당 부트스트랩의 내용을 복사해서 붙여넣기 하면 HTML 프로젝트에서 부트스트랩을 사용할 수 있다.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.slim.min.js"></script>
<!-- Popper JS -->
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
내용은 head태그 내에 복사해서 붙여넣기 해준다.
해당 테이블 부분의 코드 또한 복사해서 붙여넣기 한다.
결과적으로 추가 된 부분
낮을수록 해당 css가 적용된다고 생각하면 된다.
Inline(태그 안에 정의) > Internal(내부js) > external(bootstrap)
if문 내에 true/false로 확실하게 정해줘야 했다.
당연히 인덱싱이 성공하면 정수 값이 반환되니까 if문이 잘 실행될 것이라 생각하여 처음에 아래와 같이 코드를 작성했다.
if (saram.name.indexOf(KeyWord.value))
이처럼 keyWord에 입력된 값이 사람 데이터베이스의 이름내에 들어있는 지 찾으려 하였는데, 제대로 동작하지 않았다.
그 이유는 nonzero이기 때문이다.
고00 교수님 블로그가 생각난다..
if문은 음수일 때도 동작하고 양수일 때도 동작한다.
다만 만약 이름의 첫번째인 성만 치고 검색을 했다면 해당 인덱스는 0으로 if문이 동작하지 않는다는 것이다.
따라서 요렇게 반환되지 않는 경우의 조건을 확실히 쓰자.
if (saram.name.indexOf(KeyWord.value) != -1)
과제 시, 강사님 코드는 일체 보지 않고 진행했는데 삭제는 쉬웠으나 글에 취소선을 긋는 부분이 바로 떠오르지 않았다.
코드를 살펴보니 삼항 연산자를 사용해서 페이지 리로딩 시에 데이터 내의 done
값에 따라 클래스 명을 다르게 부여하는 방식으로 취소선이 토글되는 방식으로 구현 되어있었다.
<span class=${task.done ? "deleted":"undeleted"}>${task.todo}</span>
클래스 또는 아이디에 따라 여러 css스타일이 적용 가능한 웹이기에 가능한 코딩이고, 정말 웹스러운 코딩이였다.
이게 웹인가 싶었다.
Whole source code is right Here!