본문 바로가기

Dev-/java script, jQuery, Ajax

자바 스크립트 함수 선언방식의 차이 1. 함수 리터럴function func() { ... }2. 함수 표현식(변수에 할당)let func = function() { ... };3. 함수 선언문/** * 선언보다 나중에 함수가 정의되어도 실행이 된다. * (함수 호이스팅) */ func(); function func() { ... } 위 방식에는 주요한 차이점 2가지가 존재한다.1. ';'의 작성 권고 유무- 1.은 블럭의 의미- 2.는 변수 선언의 의미이므로 만일의 경우 심각한 에러를 불러올 수 있다.2. 사실 2번은 내부적으로 아래와 같이 변형된 후 사용된다.let func = function func() { ... };그래서 func()와 같이 외부에서 호출해서 쓸 수 있는 것. 3. 3.은 함수 호이스팅이 가능- 권장되지 않음 아래..
자바스크립트 배열 리터럴의 요소, 프로퍼티의 차이점 let arr = ['a', 'b', 'c']; arr.name = 'joon'; arr.school = 'banchon'; /** * arr.length는??? : 3 * * 배열도 __proto__로 Object를 가지기 때문에 * 프로퍼티도 가질 수 있다. * but 프로퍼티 != 배열의 요소 */ 모든 '요소 출력'for (let i = 0; i < arr.length; i++) { console.log('arr[' + i + '] = ' + arr[i]); }arr[0] = amain.js:20arr[1] = bmain.js:20arr[2] = c 모든 '프로퍼티' 출력for (let property in arr) { console.log('property:' + property + ', ' +..
Requested JSON parse failed. [Failed], parsererror에러 해결법 나의 경우는 dataType: 'application/json',dataType: 'json', 한참 걸렸다.
캘린더(달력) 세팅 함수 - 자바 스크립트 퍼블리셔가 달력을 그냥 하드코딩 해 줘서 갑자기 만들어야 했던 달력나중에 쓸 일이 있을라나 싶기도 하지만 저장 /** * 달력 세팅 함수 * 0 : 1월 ~ * 1 : 1일 ~ * 0 : 일요일 ~ * @param targetMonth */ setCalendar(year, month, target) { let targetFirstDay = this.cmsUtil.getFirstDay(year, month); let targetLastDay = this.cmsUtil.getLastDay(year, month); let targetFirstDay_date = targetFirstDay.getDate(); let targetLastDay_date = targetLastDay.getDate(); let targ..
자바스크립트 replaceAll을 하고 싶을때 let str = 'ab,cd,d,e';위와 같은 문자열에서 ','을 모두 공백으로 치환하고 싶을 때, /*** 맨 앞 하나만 바뀐다. 결과: abcd,d,e */ let newStr1 = str.replace(',', '');--> 원하는 결과가 나오지 않는다./*** 원하는 결과: abcdde */ let newStr2 = str.replace(/,/gi, '');--> 정규식을 사용해야 한다. ------------------------- 수정정규식을 모른다면, 이게 제일 속 편한 것 같다value.split('.').join('');
jQuery ajax 동기식으로 사용하기 ajax를 사람이 직관적으로 생각했을때 그대로 사용하면 아래와 같은 문제가 발생한다. 가령 아래와 같은 경우이다./** * 폼 전송 */ function submitForm(formClass) { .......... // ajax 아이디 중복검사 if (validationResult == true) /** * 비동기식 ajax 함수 * async: true(defalut) */ checkIdDupl(); .......... // 최종 폼 전송 if ((validationResult = setFinalValidationResult(formClass)) == true) { /** * checkIdDupl()가 끝나기 전에 먼저 실행되어버린다. * --> 코드가 복잡해지면 파악하기 힘듦 */ printForm..
jquery append() 이벤트가 쌓일 때 ,preventDefault()가 작동하지 않을 때(preventDefault() is not working) 동적으로 영역을 불러올 때그 추가된 영역에 관한 이벤트를 함수로 등록할 경우, 불러올때마다 해당 함수를 등록해주어야 한다. 나 같은 경우는 영역에 클래스를 주어 .each()로 이벤트를 전체로 주는 방식을 사용했는데이런 문제가 발생한 적이 있었다. ~~~~~ ~~~~~ ------------------------> btnFunction() 등록~~~~~ ~~~~~ ~~~~~ ------------------------> btnFunction() 등록~~~~~ ------------------------> btnFunction() 등록 function btnFunction() { $('button').each(function() { $(this).on('click', function() { ~~~~~~~~..
Ajax를 사용하다가.. Ajax와 일반 스크립트 로직을 섞어 구현하려는 부분이 있었습니다. 제가 생각한 그림은 일반일반Ajax (결과 리턴 -> 이후 로직에 영향)일반일반일반 대강 위와 같은데,Ajax가 뭔지도 확실히 인지하지 않고, 무의식적으로 코딩을 하다가 시간을 엄청 쏟았네요. - Ajax: 비동기적인 ~~~ 비동기적: 요청의 결과를 기다리지 않고 애플리케이션이 진행 ~ 로직의 결과가 계속 뒤죽박죽인 이유가 여기있었습니다.결과를 반영할 전역변수를 선언해서 해결하면 가능하긴 한데,,, 까먹지 말아야겠습니다.