5. 초기화
innerHTML
display:none으로 지정한 요소, 자식 요소의 element tags, 모든 스페이싱(띄어쓰기), 줄 바꿈이 그대로 출력된다.
세 가지 중에서 가장 추천하지 않는 속성이다
프로퍼티의 값은 text와 html로 파싱 한 결과이며 다른 속성에 비해 상대적으로 파싱이 느리다
하지만 파싱이 느리다는 점 보다 더 큰 문제는 보안 취약성 문제이며,
XSS의 취약 사례로 언급이 되기도 했었다.
innerText
text, plain으로 파싱한 결과이며 element tags 없이 딱 텍스트만 나온다.
만약 여러 번 중복되는 스페이싱이 존재한다면 딱 한 번만 나오며, 줄 바꿈은 따로 적용되지 않는다
innerText는 IE8이하에서 지원되지 않았던 TextContent와 달리 IE엔진에 적합한 속성이기 때문에
다른 브라우저가 아닌 IE를 중점적으로 고려하는 경우 TextContent를 대신하거나,
화면에 있는 텍스트 그대로 읽어오고 싶을 때 사용하기에 괜찮다
TextContent
위의 innerText처럼 프로퍼티가 text, plain으로 파싱 한 결과이며 element tags 없이 텍스트만 나온다
여기까지만 보면 innerText와 같아 보이지만, 여러 번 중복되는 스페이싱과 줄 바꿈 모두 그대로 적용이 된다.
또한 노드가 갖고 있는 모든 텍스트를 읽어오기 때문에 display:none; 의 속성을 준 텍스트도 읽어온다
세 가지 속성 중 가장 사용을 추천하는 속성이며, 성능이나 보안적인 측면에서 가장 뛰어나다
Number( string )
인자로 문자열을 받으면 인자를 숫자형으로 변환 시켜 줍니다
|
1
2
3
|
let str = Number('12345') ;
console.log( str , typeof str ) ;
// 12345 , 'number'
|
parseInt( string )
인자로 받은 문자열을 정수로 변환 시켜 줍니다.
|
1
2
3
|
let str = parseInt('12345') ;
console.log( str , typeof str ) ;
// 12345 , 'number'
|
여기 까지 보면 Number와 parseInt가 동일하다고 볼 수 있습니다.하지만 인자로 받은 값에 숫자가 아닌 문자가 들어갈 경우 결과는 달라집니다.
아래처럼 숫자+문자의 조합일 경우 Number() 함수는 NaN을 리턴합니다.
|
1
2
3
|
let str = Number('123가나다');
console.log( str ) ;
// NaN
|
하지만 parseInt는 숫자로 시작해서 숫자가 끝날 때 까지만 형변환을 해서 리턴해줍니다.
|
1
2
3
|
let str = parseInt('123가나다') ;
console.log( str ) ;
// 123
|
이 점이 바로 둘의 차이점 입니다. 하지만 parseInt도 예외는 있습니다. 시작을 숫자로 하는 경우에는 parseInt도 NaN을 리턴해줍니다.
|
1
2
3
|
let str = parseInt('가나다123') ;
console.log( str ) ;
// NaN
|
'코드스테이츠 42기 > [TIL] Section 1' 카테고리의 다른 글
| S1U9 [Javascript] 배열, 객체 (0) | 2022.11.03 |
|---|---|
| S1U8 [Linux/Git] 기초 (0) | 2022.11.03 |
| S1U6 [HTML/CSS] 활용2 (0) | 2022.10.31 |
| S1U6 [HTML/CSS] 활용 (0) | 2022.10.28 |
| S1U5 CSS 기초 (1) | 2022.10.27 |