# 자바스크립트 학습
# 함수 호출 구조
## toString()
구분 |
데이터(값) |
data |
문자열, String 인스턴스 |
파라미터 |
사용하지 않음 |
반환 |
변환한 값 |
- data 위치의 값을 String 타입으로 변환
var value = 123;
var result = value.toString();
log(typeof result);
=>
string
- 빌트인 toString 오브젝트는 "123".toString(); 처럼 문자열로 작성해야 한다.
- String 타입을 String 타입으로 변환이 필요한 이유
__proto__ 로 구조적으로 가져가는데
앞의 __proto__ 에 함수이름을 작성한 것은 아래의 toString이 실행되지 않도록 하기 위함이다.
(아래에 있는 것은 프로퍼티를 toString 으로 변환하는 것이고,
위이 것은 문자열을 toString 으로 변환하는 것이다.)
=>
즉, 문자열을 문자열로 변환하는 것이지만,
프로퍼티를 문자열로 변환하는 것을 방지하기 위해
빌트인 String 오브젝트에 toString 함수를 작성한다.
__proto__;
toString(); // 빌트인 String 오브젝트의 toString
__proto__;
toString(); // 빌트인 오브젝트의 toString
- 대부분의 빌트인 오브젝트에는 toString()과 valueOf()가 있다. (없는것도 있다.)
## 자바스크립트의 함수 호출 구조
- 먼저 데이터 타입으로 오브젝트를 결정한다.
- 오브젝트의 함수를 호출한다.
var value = 123;
value.toString();
"123".toString();
- toString(123) 처럼 123을 파라미터에 작성
var result = toString(123);
log(result)
=>
[object Undefined]
빌트인 오브젝트의 toString 함수로 호출,
123을 오브젝트로 간주하여 object 형태를 문자열로 변환한다.
# 인덱스로 문자열 처리
## charAt()
구분 |
데이터(값) |
data |
반환 대상 |
파라미터 |
반환 기준 인덱스(index) |
반환 |
인덱스 번째 문자 |
var value = "sports";
log(value.charAt(1));
log(value[1]);
=>
p
p
- 문자열 길이보다 인덱스가 클 경우, 빈 문자열을 반환한다.
var value = "sports";
log(value.charAt(12));
=>
"" // 빈 문자열 반환.
- 일반적으로 존재하지 않으면 undefined를 반환한다.
var value = "sports";
log(value[12]);
=>
undefined
## indexOf()
구분 |
데이터(값) |
data |
검색 대상 |
파라미터 |
검색할 문자열 |
검색 시작 위치, 디폴트: 0 |
반환 |
인덱스 |
- data 위치의 문자열에서 파라미터의 문자와 같은 첫 번째 인덱스를 반환한다.
- 검색 기준
1. 왼쪽에서 오른쪽으로 검색
var value = "123123";
log(value.indexOf(2));
log(value.indexOf(23));
=>
1
1
처음에 검색되는 문자의 인덱스가 반환.
값을 구하게 되면 더 이상 값을 구하지 않는다.
2. 두 번째 파라미터를 작성하면 작성한 인덱스부터 검색한다.
var value = "123123";
log(value.indexOf(2, 3));
=>
4
3. 같은 문자가 없으면 -1을 반환한다.
var value = "123123";
log(value.indexOf(15));
=>
-1
var value = "123123";
log(value.indexOf(2, -1)); // 두 번째 파라미터 값이 0보다 작으면 처음부터 검색(0번 인덱스 부터)
log(value.indexOf(2, 9)); // 두 번째 파라미터 값이 length보다 크면 -1 반환
log(value.indexOf(2, "A")); // 두 번째 파라미터가 NaN이면 처음부터 검색(0번 인덱스 부터)
=>
1
-1
1
## lastIndexOf()
구분 |
데이터(값) |
data |
검색 대상 |
파라미터 |
검색할 문자열 |
검색 시작 위치, 디폴트: 0 |
반환 |
인덱스 |
- data 위치의 문자열에서 파라미터의 문자와 같은 인덱스를 반환한다. (단, 뒤에서 앞으로 검색한다.)
var value = "123123";
log(value.lastIndexOf());
=>
4
1. 투 번째 파라미터를 작성하면 작성한 인덱스부터 검색
var value = "1231231";
log(value.lastIndexOf(1, 4));
log(value.lastIndexOf(2, -1));
=>
3
-1 // 두 번째 파라미터가 0보다 작으면 -1 반환
# 문자열 연결, 대소문자 변환
## concat()
구분 |
데이터(값) |
data |
연결 시작 값, String 인스턴스 |
파라미터 |
연결 대상opt, 다수 작성 가능 |
반환 |
연결한 결과 |
- data 위치의 값에 파라미터 값을 작성 순서로 연결하여 문자열로 반환한다.
- String 인스턴스를 작성하면 프리미티브 값을 연결한다.
var result = "sports".concat("축구", 11);
log(result);
var obj = new String(123);
log(obj.concat("ABC"));
=>
sports축구11
123ABC
## toLowerCase()
구분 |
데이터(값) |
data |
변환 대상 |
파라미터 |
사용 하지 않음 |
반환 |
변환 결과 |
log("ABCDE".toLowerCase());
=>
abcde
## toUpperCase()
구분 |
데이터(값) |
data |
변환 대상 |
파라미터 |
사용 하지 않음 |
반환 |
변환 결과 |
log("abcde".toUpperCase());
=>
ABCDE