- Javascript-2일차2023년 11월 20일 17시 27분 19초에 업로드 된 글입니다.작성자: 삶은고구마
1117실습문제 리뷰
//2. 폼단위 // document.querySelector("[name=purchaseFrm]"); // document.forms[0] // document.forms.purchaseFrm document.purchaseFrm.reset(); // 폼하위의 input태그 value속성 초기화
document 객체 중에 몇개는 이렇게 접근 가능하다.
document.forms[0];
document.네임값
즉, document.purchaseFrm
으로도 접근이 가능함. name만 가능하고, id는 불가능하다.
css javascript <style></style>
<link rel="stylesheet"
href="><script></script>
<script src=''></script>-
javascript 페이지 호출 시
처음부터 끝까지 코드를 읽은 후 화면에 출력되는지라
button onclick=함수호출
함수선언
이런식이여도 오류가 발생하지 않는다.
(+ button의 onclick은 클릭해야 함수를 호출하는 기능이므로)
-
html사용시만 <br>
그외 js시엔 \n 으로 개행
1120 학습 목차
7.scope
8.casting
9.operator
10.api_string_math_date
11.array
7.scope
지역,전역변수
전역변수:함수 바깥쪽에 선언된 변수
지역변수:함수 내부에서 선언되고 사용되는 변수.
//전역 let a = 10; console.log(a); function foo() { //지역 let b =20; console.log(b); //전역변수 접근 a = 30; }
const 블럭 스코프, 상수 (되도록 const 사용) let 블럭 스코프, 변수 (for문의 가변변수 정도만 let사용) var 함수 스코프(함수만 인정/if,for문 인정x),변수, deprecated 주의할 점 : 에러 가 난 라인 이후로는 실행되지 않기 때문에 최우선으로 에러라인 수정할 것.
8.casting
NaN
숫자로 표현 못할 때 발생하는 오류 키워드. Type:Number
sql의 null처럼 NaN과 계산하면 모두 NaN이 된다.
아래의 표에서 string을 형변환하는데 실패하면 NaN이 됨.
산술 연산 시 주의 할 형변환 number + string = string number - string = number | NaN (Not a Number) number * string = number | NaN number % string = number | NaN number / string = number | NaN 비교연산자 ★엄격비교연산자 == 타입이 달라도 값(형변환 후)이 같으면 true === 값과 타입이 모두 같아야 true != 값이 다르면 true !== 값 또는 타입이 달라야 true console.log(3 == "3"); //true console.log(3 != "3"); //false console.log(3 === "3"); //false console.log(3 !== "3"); //true //사전등재순 ex) ㅎ는 ㄱ보다 크다 console.log("a" > "b"); //b는 a보다 크다 console.log("a" < "b"); console.log("a" >= "b"); console.log("a" <= "b");
숫자 형 변환 Number() 숫자로 변환 변환 불가한 문자가 하나라도 있으면 NaN반환 parseInt() 정수로 변환 변환 불가한 문자가 있기 전까지 반환 parseFloat() 실수로 변환 변환 불가한 문자가 있기 전까지 반환 function test3() { const num = '123.456'; console.log(Number(num)); //123.456 console.log(parseInt(num)); //123 console.log(parseFloat(num)); //123.456 const num2 = '123.456원'; console.log(Number(num2)); //nan console.log(parseInt(num2)); //123 console.log(parseFloat(num2)); //123.456 const num3 = '$123.456'; console.log(Number(num3)); //nan console.log(parseInt(num3)); //nan console.log(parseFloat(num3)); //nan //숫자가 아닌 문자열 제거 const _num3 = num.replace(/[^0-9.]/g,''); console.log(_num3); console.log(Number(_num3)); //123.456 console.log(parseInt(_num3)); //123 console.log(parseFloat(_num3)); //123.456 }
input value
input의 type이 text,number,range 등등..그 어떤 것이든 결과값은 string형이다.
(type은 해당 타입 외의 다른 타입 입력을 방지하는 것일 뿐이다.)
Infinity(무한수)
type:number
너무 큰 숫자는 표현되지 못하고 Infinity로 대체된다.
function test4() { console.log(10/0); //Infinity console.log(10/0 === Infinity); //true }
논리형으로의 자동 형 변환 모든 자료형은 boolean으로 평가 될 수 있다. true(값이 있는 것) 123, 45.5, -100, "apple", [] , {} , Infinity false(값이 없는 것) 0, 0.0, "", undefined, null, NaN 9.operator
짧은 조건문 실행문에 return은 작성 불가(if문을 사용할 것) (조건식) && (실행문) true 일때만 실행 (조건식) || (실행문) false 일때만 실행 -prompt : input과 마찬가지로 string을 반환함.
/** * true && true ->우항검사 * true && false ->우항검사 * false && true * false && false * =========================== * true || true * true || false * false || true ->우항검사 * false || false ->우항검사 * * 위의 성질을 이용한 조건문 */ num % 2 == 0 && alert("짝수 입니다!"); num % 2 == 0 || hol(); if(num % 2 == 0) alert("짝수입니다."); else alert("홀수입니다.."); //foo라는 id로 검색 //foo가 없으면 body밑에 태그를 추가하시오. //null || (실행문) //false || (실행문) //두 번째 실행 때는 이제 foo가 존재하므로 또 추가되진 않음. //연산자우선순위 때문에 괄호처리할것. document.querySelector("#foo") || (document.body.innerHTML +='<div id="foo">🍗🍗🍗🍗🍗🍗</div>');
10.api_string_math_date
String
"",'',``로 리터럴을 감싸서 표현한다.
String 내장객체에서 제공하는 api를 사용한다.
자바스크립트에서도 자바와 마찬가지로 charAt 기능을 제공함. str.charAt(i)
자바와 마찬가지로 불변성을 지님.
substring(start,end) start포함 end미만까지 ex)str(1,3): 1,2만 출력 substr(start,length) start부터 길이만큼. deprecated replace(search,newStr) str.replace('Apple','사과'); //맨 첫번째것만 변환replaceAll(search,newStr)
ecma2021에 추가됨str.replaceAll('Apple','사과');//모두 변환function test2() { //@실습문제:사용자 입력값에서 알파벳 개수 세기 /** * prompt를 통해 임의의 문자열을 받고 알파벳 개수 출력 */ const str = prompt(`문자열을 입력해주세요`); const newStr = str.replace(/[^a-zA-Z]/g,''); console.log('알파벳은 ',newStr.length,'개입니다.'); //==================================================== if(!str) { //아무것도 입력안하거나 취소 누르면. alert("유효한 문자열을 입력해주세요."); return;//짧은조건문에 사용못함. } let cnt = 0; //상수로 선언x 계속 변화(누적)하는 변수니까.. for(let i=0;i<str.length; i++) { //console.log(str[i]); //java처럼 알파벳==아스키코드 이런게 없어서 범위 연산을 해야한다. if(str[i]>="A" && str[i] <="Z") cnt++; if(str[i]>="a" && str[i] <="z") cnt++; } alert(`입력하신 문자열 ${str}에서 알파벳의 개수는 ${cnt}개 입니다. `); }
난수
Math.random() : 0.0 이상 1.0 미만 실수 반환
Math.random()*경우의 수 + 최소값
java:(int) Math.random()*경우의 수 + 최소값
js:(Math.trunc(Math.random()*경우의 수 + 최소값 ))
ceil 올림 round 반올림 floor 내림 trunc 소수점 이하 버림 Date
날짜/시각을 관리하는 객체.
기본적으로 시스템 시각을 읽어와서 사용함.
console.log(now.getFullYear()); console.log(now.getMonth()+1);//0~11이라 사용하려면 +1 console.log(now.getDate()); console.log(now.getHours()); console.log(now.getMinutes()); console.log(now.getSeconds()); console.log(Date.now()); //UTC time/초(Epoch Time) const date = new Date(Date.now()); //UTC time으로 Date객체 생성. console.log(date); //특정 날짜 & 시각 객체 const someday = new Date(1999,8,9,12,30); //8월x 9월임. 0-based console.log(someday);
11.array
Array
js의 배열은 타입지정이 없고, 크기도 제한이 없음.
java의 ArrayList<Object>와 비슷함.
const arr1 = [1,2,3]; //리터럴로 생성 const arr2 = new Array(1,2,3); //new 연산자로 생성
배열 사이즈 외의 인덱스를 참조시 undefined반환 (오류나지는 않음)
단, 해당 인덱스의 속성을 참조하면 에러가 발생한다.
Cannot read properties of undefined (reading 'abc');undefined의 속성을 읽을 수 없다.==nullPointException자바와 비슷하게 없는애를 확인하면 null로뜨는데null인 애의 무언가를 참조하려고 하면 오류발생함(java의 nullstr.length()와 유사)반복문
for for in 각 속성명(index)을 매턴에 반환
객체 순회에 적합하다.for of 각 속성값을 매턴에 반환 전개 연산자(Spread Operator)
const arr = [1,2,3]; const arr2 = ['가','나','다']; const arr3 = [...arr,...arr2]; console.log(arr3); for(let index in arr3) { console.log(index,arr3[index]); }
유사배열(가짜배열)
array 객체를 상속하지 않은, 배열모양만 흉내낸 객체.
index, length 속성만 있다.
array 객체가 제공하는 다른 메소드는 사용불가.
ex)
getElementalsByTagName
getElementalsByClassName
getElementalsByName
querySelectorAll
array가 아닌 객체는 array속성이 아님 //가짜배열을 진짜배열로 변환하기 //1.전개연산자 [...buttons].map(function(b) {console.log(b)}); //2.Array.from Array.from(buttons).map(function(b){console.log(b)});
indexOf 해당 요소의 인덱스를 반환
존재하지 않을 시 -1 반환lastIndexOf 마지막 요소 인덱스 반환 find 조건에 만족하는 최초의 요소를 반환 findIndex 조건에 만족하는 최초 요소의 인덱스를 반환 concat 두 배열 연결 (불변성) 원본은 그대로 유지
(concat은 한번에 2개만 연결 할 수있지만 전개 연산자는 여러개 가능)join <>split
해당 배열에 있는 요소들을 하나의 문자열로 합침(구분자는 아무거나 사용)
ex)array.join(+);sort 오름차순 정렬 (mutable) reverse 리버스 (mutable) //내림차순 정렬(또는 커스텀 정렬) - 정렬 기준함수를 같이 전달해야함 console.log(nums.sort(function(a,b){ return b-a; //내림차순 (기존은 return a-b;) })); //문자열 정렬 console.log('홍길동'-'고길동'); //nan //연산하려고 하면 자동으로 홍길동과 고길동을 숫자로 변환시킨 후 //계산하려고 하는데 둘다 숫자로 바꿀 수가 없어서 NaN가 나옴 console.log('홍길동'>'고길동'); //true console.log(names.sort(function(a,b){ if(a>b) return -1; //자리교환 if(b<a) return 1; return 0; }));
push 마지막에 요소 추가 pop 마지막 요소 제거 (반환) unshift 0번지에 요소 추가 shift 0번지의 요소 제거(반환) slice(start,end) immutable
start부터 end전까지[미만] 제거
end 생략시 start부터 끝까지
start,end 생략시 전체복제(0부터 끝까지)
number | undefined =>숫자가 올수도있고 안올 수도있다.[생략 가능하다]splice
(start,
delCnt,
newItem1,
newItem2,....)mutable
start부터 delCnt개를 삭제하고 새 요소들을 추가.
그리고 삭제 된 요소는 배열로 반환됨.
요소를 삭제하고 싶지 않다면 delCnt를 0으로 한다.toString java처럼 override 된 toString으로 배열을 문자열로 출력 가능. 다음글이 없습니다.이전글이 없습니다.댓글