개발을 하면서 데이터를 다루다보면 null값을 체크해야하는 상황이 정말 잦다. 그런데 회사제품의 JS 코드를 보면서 not 연산자와 or 연산자로 null값을 체크하고 있는 것을 보았다. 짧고 깔끔하게 작성되는 것을 보고 글을 이것을 정리해보고자 남긴다. 코드를 통해 살펴보자. 1. not 연산 let other = new Array(10); let temp1 = null; let temp2 = 10; other.push(!temp1 ? 0 : temp1); other.push(!temp2 ? 0 : temp2); console.log(other); temp1은 null 값인데, JS에서는 null값은 false로 취급한다. 다만 부정연산자가 앞에 붙어있으니 !temp1 true를 반환한다. temp1은..
1. a 태그 사용 이 방법은 가장 간단하며, HTML의 태그에 href 속성으로 다운로드할 파일의 경로를 지정하고, download 속성을 추가하여 구현할 수 있다. 보통 정적 파일을 다운로드하는 경우에 적합하다. $("#btn_SaveExcel").on('click', function(e) { var a = document.createElement('a'); a.href = uri + base64(format(template, ctx)); a.download = "test(" + document.querySelector("#report_period_text").innerHTML + ")"; a.click(); //just in case, prevent default behaviour e.prevent..
Call Stack은 자바스크립트가 함수 실행을 핸들링하는 방법 중 하나이다. 자바스크립트는 실행해햐하는 함수들을 Stack 위에 올린다. 자바스크립트는 함수를 스택위에 올려놓고 합수가 실행이 끝나면 스택에서 제거한다. 이를 간단한 예제를 통해서 확인하면 다음과 같다. function three() { console.log("i love js"); } function two() { three(); } function one() { two(); } function zero() { one(); } zero(); 위 코드를 실행한 뒤 크롬 개발자 도구를 통해서 call stack을 하나하나 따라가보도록하자. 먼저 가장먼저 실행되는 zero() 함수가 callStack에 들어가 있다. 그다음 zero()에서 호..
https://watchout31337.tistory.com/150 eval 함수 eval() 함수 eval() 함수는 문자열을 받아 자바스크립트로 실행을 시키는 함수이다. eval(string) 형태로 사용한다. ex) eval('2+2') //4 eval()함수는 이런 점을 이용해 악의적인 실행을 할수 있다. 예를들어 watchout31337.tistory.com 자바스크립트에서 사용되고 있는 eval 함수의 보안 취약점에 대해서 이해하기 쉽게 작성된 글
- 객체 리터럴 let user = { name : Mike, age : 30, } Javascript에서는 위와 같이 name, age를 갖는 객체를 선언하여 만들어 줄 수 있다. 그런데 개발을 하다보면 이러한 객체 리터럴을 여러개 생성해야하는 경우가 있는데 이럴 때 생성자 함수를 통해서 간편하게 생성할 수 있다. function User(name, age) { this.name = name; this.age = age; this.sayName = function () { console.log(this.name); }; } let user1 = new User("Kim", 20); let user2 = new User("Han", 40); let user3 = new User("Park", 30); c..
들어가며 ES6의 대표적인 Keyword를 뽑으라고 한다면 아마 자바스크립트에서 변수를 선언할 때 사용하는 3가지 Keyword인 var, let, const를 생각해볼 수 있다. 이번 포스팅에서는 이러한 var, let, const에 차이에 대해서 자세하게 정리하고자한다. let과 var의 차이점 var와 let은 크게 다르지 않기에 대부분의 경우에는 둘을 바꿔서 사용해도 문제가 생기지 않는다. 그렇다면 다른점은 무엇일까? 1. var는 한번 선언된 변수를 다시 선언할 수 있다. var name = 'Mike'; console.log(name); var name = 'Jane'; console.log(name); 하지만 let은 한번 선언된 변수를 다시 선언할 수 없다. let name = 'Mina'..
String 자료형에 + 연산이 있을 때마다 새로운 String 객체가 생성된다(문자열 간 + 연산이 있는 경우 자바는 자동으로 새로운 String 객체를 만들어 낸다. 따라서 메모리에 효율적인 사용을 위해서 StringBuffer를 사용하기도 한다. 1. StringBuffer StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성 sb.append("this"); sb.append("is"); sb.append("String"); String result = sb.toString(); System.out.println(result); 2. String String result = ""; result += "This"; result += "is"..
JavaMailSender 라이브러리는 라이브러리명에 걸맞게 발송 라이브러리이다. 발송대상은 메일 서버( smtp) 즉 javamail에 등록된 호스트 주소로 접속해서 그 서버에게 메일 좀 보내주는 역할만하고 끝나는 라이브러리이기 때문에 상대 메일서버에서 뭔가 오류가 발생되었다는 정보를 리턴받을 수는 없는 라이브러리이다. 즉 JavaMailSender에서 메일 발송이 성공되었다는 것은 나의 호스트주소로 메일 내용을 문제없이 전송했다는 것이지 이것이 받는 사람의 서버까지 정상적으로 도착했다는 뜻은 결코아니다. 그래서 메일 발송에 대한 실패 정보를 받고자 한다면 별도의 메일발송 시스템을 구축하고 메일서버와 도메인이 필요하다. 또한 발송하는 메일 서버와 발신자의 도메인이 같아야한다. 그렇게 해줘야만 메일함 꽉..