🐟 문자열 연결하기
+
연산자는 피연산자가 모두 문자열이면 문자열로 연결// + 연산자를 활용하여 문자열 연결 예시 "Hello " + "World!" // "Hello World!" "1" + "2" // "!2"
10 + " little indians" // "10 little indians" 1 + {} // "1[obect Object]" true + (new Date()) // "trueTue Sat Aug 05 2017 22:38:59 GMT+0900 (KST)"
숫자
또는 NaN
으로 타입을 바꾸어 더한다.var a = 3; console.log("a 값은" + a + "입니다."); // a 값은 3입니다.
🐟 문자열을 조작하는 메서드
let msgObj = new String("Everything is practice.");
🎃 String 객체의 주요 메서드
charAt(n)
: 대상 문자열의 n번째 문자let str = "My name is leedev"; str.charAt(5) ➡ m
concat()
:str1.concat(str2)
대상 문자열과 인수의 문자열을 연결해서 반환let str1 = "My name is"; let str2 = "leedev"; str1.concat(' ', str2) ➡ My name is leedev ❗ 띄어쓰기는 빈 문자열로 추가해 준다
includes()
:str.includes("word")
하나의 문자열이 다른 문자열에 포함되어 있는지를 판별하고, 결과를true
또는false
로 반환한다.let str = "My name is leedev"; str.includes("name") ➡ true str.includes("kimdev") ➡ false
indexOf()
:str.indexOf("word")
주어진 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환
❗ 일치하는 값이 없으면 -1을 반환
❗ 띄어쓰기도 count 포함let str = "My name is leedev"; str.indexOf("name") ➡ 3 str.indexOf("leedev") ➡ 11 str.indexOf("kimdev") ➡ -1
lastIndexOf()
:str.indexOf("word")
주어진 String 객체에서 주어진 값과 일치하는 마지막 번째 인덱스를 반환
❗ 일치하는 값이 없으면 -1을 반환
❗ 띄어쓰기도 count 포함let str = "My name is leedev and this name is good"; str.lastIndexOf("name") ➡ 27
replace(s1, s2)
:str.replace("word1", "word2")
대상 문자열에 포함된 문자열 s1을 문자열 s2로 치환한 결과값let str = "My name is leedev"; str.replace("name", "nickname"); // My nickname is leedev
slice(startIndex, endIndex)
startIndex
부터 잘라낸 새로운 결과값 반환 /endIndex-1
까지 잘라내기let str = "My name is leedev"; str.slice(0, 2); ❗ 띄어쓰기도 count 포함 // My // endIndex가 2이면, index 1까지 잘라낸다
split(분할 기준 기호)
문자열을 분할 기준 기호에 따라 잘라서 배열로 변환let str = "My name is leedev"; str.split(' '); // 띄어쓰기를 기준으로 분할 // ['My', 'name', 'is', 'leedev']
toString()
문자형이 아닌 값을 문자형으로 변환let num = 15; num.toString(); // "15"
trim()
대상 문자열에서 앞뒤 공백을 제거let str = " My name is leedev "; str.trim(); // "My name is leedev"
let msg = "Everything is practice."; msg.substring(7, 10) // "ing" : 7번째 문자부터 10번째 문자 이전의 문자열 msg.slice(7, 10) // "ing" : 위의 코드와 같음 msg.slice(-3) // "ce." : 마지막 문자 세 개 msg.slice(-9, -6) // "pra" : 끝에서부터 9번째 문자부터 6번째 문자 이전의 문자열 msg.indexOf("t") // 5 : 문자 t가 처음 나오는 위치 msg.indexOf("i", 10) // 11 : 10번째 이후 문자에서 문자 "i"가 처음 나오는 위치 msg.lastIndexOf("t") // 18 : 문자 "t"가 마지막으로 나오는 위치 msg.split(" ") // [ "Everything", "is", "practice" ] : " " 로 문자열을 나눔 msg.replace("p", "P") // Everything is Practice : "p"를 "P"로 바꿈 msg.toUpperCase() // EVERYTHING IS PRACTICE : 모든 문자를 대문자로 바꿈 msg.endsWith(".") // true : 문자열이 "."으로 끝나는지를 뜻하는 논리값 msg.includes("thing") // true : "thing"이 포함되어 있는지를 뜻하는 논리값 msg.charCodeAt(0) // 69 : 문자 "E"의 문자 코드 msg.codePointAt(0) // 69 : 문자 "E"의 코드 포인트
🐟 문자열을 배열로 읽고 쓰기
Array
) let msg = "Everything is practice.";
msg[3] ➡ "r"
msg[msg.length-1] ➡ "."
// 거꾸로 length를 셀때는 0이 아닌 -1부터
let msg = "Everything is practice.";
msg[3]= "R"
console.log(msg)
// Everything is practice (새로 할당하려는 값이 무시됨)
🎃 관계 연산자
논리값(true/false)
으로 반환if/else 문, do/while 문, for 문
) 에서 조건식을 만들 때 사용🎃 동일 연산자
좌변과 우변의 피연산자가 같은지를 판별
let a = [1, 2, 3];
let b = [1, 2, 3];
let c = a;
console.log( a == b ); // -> false
console.log( a == c ); // -> true
// 좌우 피연산자의 타입이 다를 때 ( == ) ❗ 느슨한 일치 null == undefine; // true 1 == "1" // true "0xff" == 255 // true true == 1 // true true == "1" // true (new String("a")) == "a" // true (new Number((2)) == 2 // true [2] == 2 // true
// 좌우 피연산자의 타입이 다를 때 ( === ) ❗ 엄격한 일치 null === undefine; // false 1 === "1" // false (문자와 숫자는 다르다) "0xff" === 255 // false true === 1 // false (boolean과 숫자는 다르다) true === "1" // false (new String("a")) === "a" // false [2] === 2 // false
🎃 논리 연산자
&&
연산자의 우선순위는 ||
보다 높다. 괄호가 따로 없다면 &&부터 연산x > 0 && y > 0 // x와 y가 모두 참일 때만 true
x > 0 || y > 0 // x와 y가 하나라도 참이면 true, 모두가 0이면 false
!(a && b) // a 와 b가 거짓
❗ && 모두가 true면 true , 그 외는 모두 false ❗ || 모두가 false면 false , 그 외는 모두 true ❗ && 연산자의 우선순위는 || 보다 높다. 괄호가 따로 없다면 &&부터 연산한다. true || true && false; // true (&&부터 연산) (true || true) && false; // false true || false && false; // true (&&부터 연산) (true || false) && false; // false