모던 자바스크립트 (5)

kirin.log·2021년 3월 3일
0
post-custom-banner

📚 문자열

🐟 문자열 연결하기

  • + 연산자는 피연산자가 모두 문자열이면 문자열로 연결
// + 연산자를 활용하여 문자열 연결 예시
"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입니다.

🐟 문자열을 조작하는 메서드

  • 문자열을 String 객체로 변환하려면 String 생성자를 사용한다
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가 거짓
&& 모두가 truetrue , 그 외는 모두 false|| 모두가 falsefalse , 그 외는 모두 true&& 연산자의 우선순위는 || 보다 높다. 괄호가 따로 없다면 &&부터 연산한다. 

true || true && false; 
// true (&&부터 연산)

(true || true) && false; 
// false 

true || false && false; 
// true (&&부터 연산)

(true || false) && false; 
// false 
profile
boma91@gmail.com
post-custom-banner

0개의 댓글