www.youtube.com/watch?v=lu8fuej4BvI
항상 뉴렉쳐 센세에게 감사함을 느낍니다 ! ㅎㅎㅎ 최고 !
** 버그란 컴파일 시점에는 오류가 없으나, 런타임때 발견되는 오류이다.
우리는 문서를 볼 때 HTML 문서파일을 해석한 것을 본다.
그 중간에 DOM 트리로 로딩하는 과정을 한단계 더 거치게 된다.
위와 같은 폼 객체의 유효성 검사를 위해 NetScape 사가 적용하였다.
우리가 흔히 아는 저런 선언방식은 객체 선언방식과 같다 !
int x = 3; 이건.. 그냥 변수지만
var x = 3; 이건 사실 다른 공간에 값 3을 생성하고 그걸 가르키는 변수이다. 이걸 레퍼런스 변수라고 한다.
포인터 변수는 말그대로 주소값이 있는 가진 변수라 생각하는게 맞지만
레퍼런스 변수는 공간 자체가 없다고 생각을 해야한다 (실제로는 있지만)
변수가 가르키는 곳은 개체(강아지)이고 ref변수는 객체명이다.
*
var x = 3; 은
var x = new Number(3); 와 같다. 내부적으로 해당 리터럴을 래퍼 클래쓰로 박싱한다.
*
JS는 언어자체가 아닌 그 플랫폼(사용할수있는 도구들)이 매력적이다.
언어 특성이너무 자유로워서 기업형에는 적합하지 않고 좀 더 적합하기로는 TS가 적합하다.
framework는 앵귤러가 제일 기업형에 어울리고 리액트는 자유로우며.. 웹만 생각했을 때는 뷰가 좋다.
*
arr.splice(1) : 인덱스 1부터 짜름, 그리고 그 짤라진 결과 반환
arr.splice(1,2) : 인덱스 1에서 2개를 짜름. 이하 같음
JSON : 데이터 객체를 쉽게 표기할 수 있는 노테이션 표기법
*
var str = "hello"; 혹은 'hello'
둘다 가능하지만 double quotation이 표준이기는 하나 single을 많이 사용한다.
기본적으로 js는 html이랑 같이 사용되는데.. html의 double quotation 안에 들어갈 때 충돌이 일어나기 때문에 single을 사용한다.
본래 js는 내부적으로 Object 선언방식의 복잡한 과정을 거치는데 별도의 표기법(JSON)을 제공하여
사용자에게 편리한 선언방식을 제공한다. 실제로 python 등의 script 언어는 위와 같은 과정을 거친다.
중요한 것은 왼쪽의 과정을 모르기엔 js자체가 위험성을 내포하고 있다는 것이다.
JSON 자체의 표기법이 굉장히 편하기 때문에 다목적으로 사용된다.
XML은 거대하고 CSV는 복잡한 데이터를 표현하기에 부족하다.
JSON은 크지도 않으며 복잡한 데이터도 표현가능하다 !
위와 같이 활용되기도 한다.
var x= 3; // number
var y= new Number(3); // object
== 값이 같은지 비교
=== 값과 타입이 같은지 비교
typeof(3.5+"2") 는 string
typeof(3.5-"2") 는 number 다..
자유롭다 못해.. 규칙으로부터 허공에 떠 잇는 js..
var data = JSON.parse('{"id":1, "title": "aaa"}');
var data2 = JSON.stringify(data);
참고로 JSON.parse를 이용할 때 key값이 따옴표로 감싸져 있어야 한다.
var ar = ["hello", "hi", "greeting"];
var ob = {id : "hello", title : "hi", writeId : "greeting"};
for(var i=0; i<ar.length; i++) {
document.write(ar[i] + '<br />');
}
for (var i of ar) {
// document.write(i + '<br />');
}
for (var v of ar) {
// document.write(v + '<br />');
}
js의 foreach 구문이다. 2번째는 index, 3번째는 value이다.
위와 같이 쓰면 좋은것은.. array형태의 자료형 보다는 object형태의 자료형에서다.
object의 경우는 1번째의 경우 순회할 수 없다.
var add = new Function("x, y", "return x+y");
var add = function(x,y) {
return x+y;
}
function add(x,y) {
return x+y;;
}
위와 같은 세가지 방법으로 함수 선언이 가능하다. 1번째를 보면 알겠지만 함수도 객체이다.
2번째 스타일을 많이 쓴다. 인자로 넘길 수 있기 때문으로 보인다.
var add = function(x,y) {
console.log(arguments);
return x+y;
}
document.write(add(3,4,5,6,"hello")); // 7 출력 잘됨
함수에 선언된 x,y 는 큰 의미가 없다.. arguement값에 네이밍된 변수일 뿐이다.
js는 밑에 var를 선언과 대입을 하여도 선언문은 맨 위에서 로딩이 되기 때문에 선언된 것이 된다.
선언은 되었으면 undefined 가 뜨고
선언도 안되어 있으면 ReferenceError 이다.
var를 선언 안하고 a=3을 하면
window.a = 3 이 되는데, 이는 전역에 선언한 것이다.
위와 같이 중괄호 내에 있어도, a는 접근이 가능하다. 즉 변수 영역이 안 나뉜다.
함수영역에서만 변수영역이 나뉜다.
참고로 var a=3 이 아닌 a=3으로 넣으면 전역에서 선언한 것이기 때문에 참조가 가능하다.
위와 같이 함수내 함수가 있을 경우
내부 함수로 인해 외부가 안닫힌다. 이때의 내부 함수가 클로져이다. 함수를 닫을 수 있는 키.
'Front-end > Vanilla JS' 카테고리의 다른 글
newlecture: js es5 브라우저 플랫폼 (0) | 2021.05.01 |
---|---|
생코_jquery_메모 (0) | 2021.03.24 |
youtube 총 재생 시간 구하기 @@ !! (0) | 2020.11.11 |
js, json의 길이 추측 (0) | 2020.11.11 |
ellie: JSON (0) | 2020.11.11 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!