목록CS Language Note (8)
-
=== 와 == 연산자의 차이 자바스크립트의 변수는 모두 참조변수라는 것을 먼저 이해하고 있어야 한다. var x = 3; var y = 3; 두 개의 변수 x,y 를 같은 값인 3을 넣어 주었다. (사실 같은 값을 참조한다고 표현하는게 더 정확하다.) x라는 변수가 3이라는 데이터를 참조, y 라는 변수가 3이라는 데이터를 참조한다. console.log(x==y); console.log(x===y); 각 연산자의 결과는 무엇인가? true true가 나오게 된다. ===는 주소가 같은지 비교하는 것으로 이해할 수 있다. 만약 c 언어라면 당연히 주소는 다를 것이다. 하지만 두 개의 변수는 같은 값을 "참조" 하고 있다. 따라서 참조하는 데이터가 같기에 true가 반환된다. 만약 데이터의 값은 같으나 ..
JSON 파서란? 문자열로 넘어온 JSON 파일을 자바스크립트 객체로 변환해주는 파서 사용법은 간단한다. var data = JSON.parse('{"id":1, "title":"aaaa"}'); console.log(data.title); var data2 = {id:2, title:"bbb"}; // property에 쌍따옴표는 javascript 에서는 안써도 되지만 JSON을 파싱할때는 반드시 사용해야한다. var json = JSON.stringify(data2);// 반대로 string 형태로 변환도 가능
eval 함수를 이용한 JSON 파싱 JSON 파일을 그대로 불러오면 문자열 그대로 넘어오게 된다. 따라서 eval과 같은 함수를 통해서 Parsing 하여 데이터에 접근해야 한다. eval 함수는 문자열 형태의 데이터를 변수 혹은 Object 로 사용할 수 있게 만들어 준다. eval 함수는 범용적인 도구이고 JSON만 파싱하려고 한다면 JSON 파서가 따로 있기에 eval을 꼭 사용할 필요는 없다. 사용 예시는 아래와 같다. var n = 30; console.log(n); // 30 출력 'var n = 30'; console.log(n); // Error eval('var n = 30;'); console.log(n); // 30 출력 var data = '[{"co":1, "so2":2}]'; ..
Javascript 데이터 객체와 JSON 생성 방법 1. JSON 정의 JSON은 경량(Lightweight)의 DATA-교환 형식 Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다. JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다. 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다. 클라이언트와 서버가 간에 정보를 교환하기 위한 데이터 형태 2. Java Script와의 관계 자바스크립트의 모든 변수들은 참조 변수이다. var n = new Number(3); var n = new Boolean(true); var s = ..
배열 객체 초기화 var nums = new Array(); var nums = new Array(5, 10, 21, "hello"); var nums = new Array(5, 10, 21, "hello", new Array(2,3,4)); // 어떠한 타입도 마음대로 초기화해서 할당할 수 있다. // --> alert(nums[4][1]); // 3 출력 splice() 메소드 var nums = new Array(5, 10, 21, "hello"); nums.splice(1); // 배열에서 index 1 부터 뒤에는 지워진다. nums.splice(1,1); // index 1 부터 1개 만큼 지워라 nums.splice(1,1,"ho"); // 2 번째 값을 ho로 변경 Object 자바스크립트..
3.1 클래스와 구조체의 유사점 및 차이점- 클래스는 정말 쉽게 생각하면 함수를 포함할 수 있는 구조체라고 할 수도 있다.- 구조체 안에 함수가 존재하는것과 유사하지만, C언어에서는 문법적으로는 클래스와 똑같이 구현하는 것은 불가능하다.TMP a = {"name",age};a.Function(&a) // a.Function() 함수(메소드)를 호출하는데 있어서 차이가 있다. this 포인터와 관련 있다.(객체가 생성된 시점에서의 객체 주소를 모르기 때문에 this 사용) - 구조체와 다르게 "생성자"를 이용해서 초기화 할 수 있다.- 생성자는 반환자료형이 없고, 자동으로 호출되는 함수.- 멤버 변수가 참조자 형식이면 반드시 초기화 목록을 이용해서 초기화 해야한다.(평소에도 사용가능하다)CTEST():m_..
2.1 디폴트 매개변수- c++에서는 절대로 호출자의 코드만 보고 함수 원형을 확정해서는 안된다.- 피호출자 함수 매겨번수의 디폴트 값은 반드시 오른쪽 매개변수부터 기술해야 한다.- 디폴트 매겨변수는 모호성을 야기할 수 있으므로, 가급적이면 자제하는 것이 좋다. (단, 미래 유지보수를 위해서는 필요할 수 있다) 2.2 함수 다중 정의- C에서는 이름이 같은 함수가 존재할 수 없다. C++ 에서는 Overloading 을 통해 함수의 "다형성"을 지원한다.- 함수를 다중 정의하는 이유는 사용자의 편의성과 확장성 때문.- 같은 일을 하는 코드가 다중 정의된 함수가 여러개 존재하면 유지보수 측면에서 매우 비효율적, 따라서 C++ 에서는 가급적 함수 템플릿을 권장함. template 반환형식 함수이름(매개변수)..
Java 나 C++ 에서는 String 으로 선언한 str을 str += "A" 와 같은 연산이 가능하다. 하지만 C에서는 불가능! char *str;scanf("%s",str) 이 자체가 불가능하다. 왜냐하면 str은 read only 영역이라 동적 메모리 할당을 해주어야 한다. char* str = malloc(sizeof(char)*N); scnaf("%s",str) 이어야 한다. 그렇다면 내가 하고싶고 볼때마다 실수하는 부분은(삽질시간 증가하는) 1. str+="A" 와 같은 연산 2. char 1개와 str 과의 연산 3. 1개의 Char를 스트링으로 어떻게 변환해서 다른 스트링과 붙이고 지지고 복고 할 것 인가? ex) char strArr[10]; //초기화 되어있다 치고 strcat(str..