[Javascript log] 자료구조와 자료형(1)
원시값과 메서드
원시값 : 문자열, 숫자,bigint,boolean, symbol, null, undefined
자바스크립트는 원시값을 마치 객체처럼 다룰 수 있게 해준다. 원시값에서도 객체에서처럼 메서드를 호출할 수 있다.
객체의 장점 중 하나는 함수를 프로퍼티로 저장할 수 있다는 것.
자바스크립트는 날짜, 오류, html 요소등을 다룰 수 있는 다양한 내장객체를 제공하는데 이 객체들은 고유한 프로퍼티와 메서드를 가진다. -> 시스템 자원이 많이 소모된다.
1) 원시값은 원시값 그대로 남겨둬 단일 값 형태를 유지한다.
2) 문자열, 숫자, 불린, 심볼의 메서드와 프로퍼티에 접근할 수 있도록 언어 차원에서 허용한다.
3) 이를 가능하게 하기 위해, 원시값이 메서드나 프로퍼티에 접근하려 하면 추가 기능을 제공해주는 특수한 객체, "원시 래퍼 객체(object wrapper)"를 만들어준다. 이 객체는 곧 삭제된다.
래퍼 객체는 원시 타입에 따라 종류가 다양한데 각 레퍼 객체는 원시 자료형의 이름을 그대로 사용해 string, number, boolean, symbol이라고 부른다. 래퍼 객체 마다 제공하는 메서드 역시 다르다.
ex) str.UpperCase()
let str = "Hello;
alert(str.UpperCase()); // 이후 특별한 객체는 파괴되고 원시값 str만 남는다.
toFixed(n) : n번째 수까지의 어림수를 구한 후 이를 문자형으로 반환
let n = 1.23456;
alert(n.toFixed(2));
let str = "Hello";
str.test = 5; // 이 문자열이 들어있는지 확인, 있으면 true
alert(str.test);
엄격모드에서는 레퍼 객체를 수정하려 할때 에러가 발생하고 비엄격모드에서는 에러가 발생하지 않는다. 레퍼 객체에 프로퍼티 test가 추가되는데 레퍼객체는 바로 삭제되기 때문에 마지막줄에서 test를 찾을 수 없다.
숫자형
모던 자바스크립트 숫자 자료형
1) 일반적인 숫자는 배정밀도 부동소수점 숫자로 알려진 64bit IEEE-754
2) 임의의 길이를가진 정수는 Bigint로 나타낼 수 있다.
10억 => billion
숫자 옆에 'e'를 붙이고 0의 개수를 그 옆에 붙여주면 숫자를 줄일 수 있다. 즉, 왼쪽의 수에 e 오른쪽 수만큼 10의 거듭제곱을 하는 효과가 있다. 엄청 작은 수를 쓸때는 '1e-6'처럼 음수로 쓴다.
16진수는 0x를 사용해 표현할 수 있다. 0b와 0o를 이용하면 각각 이진수와 8진수로 쓸 수 있다.
num.toString(base) : base진법으로 num을 표현한 후 이를 문자형으로 변환해 반환한다.
어림수 구하기
1) math.floor : 첫째자리에서 버림
2) math.ceil : 첫째자리에서 올림
3) math.round : 첫째자리에서 반올림
IEEE-754에서 너무 크면 infinity로 변환된다.
isNaN : NaN인지 테스트함
NaN은 자기 자신을 포함해 그 어떤 값과도 같지 않다. (Nan===Nan하면 false)
isFinite : 일반 숫자인 경우 true 반환
단항 덧셈 연산자 + 또는 Number()를 사용하여 숫자형으로 변형할 때 적용되는 규칙은 꽤 엄격합니다. 피연산자가 숫자가 아니면 형 변환이 실패한다.
parseInt,parseFloat는 100px같이 숫자와 단위를 함께 쓰는 경우 숫자를 읽는다.
random(start,end), randomInteger(start,end)
function readNumber(){
let num;
do{
num = +prompt("Enter a number please?", 0);
}while(!isFinite(num));
if(num===null || num==='') return null;
return +num;
}
alert(`read : ${readNumber()}`);
문자열
`` : 백틱, 여러줄에 걸쳐 작성할 수 있다
문자열길이 : str
.length
let str = 'hello';
alert(str[0]); // h
alert(str.charAt(0));//h
charAt는 하위호완성을 위해 남아있는 메서드다. 접근하려는 위치에 글자가 없는 경우 []는 undefined, charAt는 빈문자열을 반환한다.
for..of를 사용하면 문자열을 구성하는 글자를 대상으로 반복작업을 할 수 있다.
문자열의 불변성 : 문자열은 수정할 수 없다. 만들려면 새로운 문자열을 하나 만든다음 할당한다.
toUpperCase();
toLowerCase();
부분 문자열찾기
1)
str.indexOf('str'); // 부분 문자열찾기, 원하는 부분을 찾으면 위치를 반환하고 아니면 -1을 반환한다. 두번째 인수로 n번째로 등장하는 위치를 찾을 수 있다.
2)
let str = "Widget with id";
if (str.indexOf("Widget")) {
alert("찾았다!"); // 의도한 대로 동작하지 않습니다.
}
str.indexOf("Widget")은 0을 반환하는데, if문에선 0을 false로 간주하므로 alert 창이 뜨지 않는다.비트 연산자 : ~n은 -(n+1)과 같다. ~n을 0으로 만드는건 n이 -1일때가 유일하다. 그렇기 때문에
let str = "Widget";
if (~str.indexOf("Widget")) {
alert( '찾았다!' ); // 의도한 대로 동작합니다.
}
이렇게 작성해준다.
"Widget with id".includes("Widget") //true or false, str.indexOf처럼 두번째 인수를 넘기면 해당 위치부터 부분 문자열을 검색한다.
alert( "Widget".startsWith("Wid") ); // true, "Widget"은 "Wid"로 시작합니다.
alert( "Widget".endsWith("get") ); // true, "Widget"은 "get"으로 끝납니다.
let str = "stringify";
alert(str.slice(0,5)); // strin 0부터 5번까지 자른다. 음수를 넘기면 문자열 끝에서부터 카운트한다.
let str = "stringify";
alert(str.substring(2,6)); // ring start와 end 사이의 문자열을 반환한다. start가 end보다 커도 된다. 음수를 허용하지 않는다.
let str = "stringify";.
alert( str.substr(2, 4) ); // ring, 두 번째부터 글자 네 개. 음수허용.
문자열 비교
1) 소문자는 대문자보다 항상 더 크다.
2) 발음 구별 기호가 붙은 문자는 알파벳 순서 기준을 따르지 않는다.
str.trim() : 문자열 앞과 끝의 공백 문자를 제거해준다.
str.repeat(n) : 문자열을 n번 반복한다.
function ucFirst(strings){
return strings[0].toUpperCase()+strings.slice(1); //이후 문자들도 slice로 붙여준다.
}
alert( ucFirst("john") );
function checkSpam(strings){
let answer = strings.toLowerCase();
if(answer.includes("viagra")||answer.includes("xxx")){
return true;
}else{
return false;
}
}
alert( checkSpam('buy ViAgRA now') );
function truncate(strings,max){
let len = strings.length;
if(len>max){
return strings.slice(0,max-1)+"...";
}else{
return strings;
}
}
alert(truncate("abcdfaefafdsfd",5))
function extractCurrencyValue(strings){
return +strings.slice(1);
}
alert(extractCurrencyValue("$120"));
Author And Source
이 문제에 관하여([Javascript log] 자료구조와 자료형(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@soyernssi/Javascript-log-자료구조와-자료형1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)