// const and let only exist in the blocks they are defined in.// const 와 let 은 선언된 블록의 안에서만 존재합니다.{leta=1;constb=1;}console.log(a);// ReferenceErrorconsole.log(b);// ReferenceError
3.2 If your code will be executed in browsers in script context, don't use reserved words as keys. It won't work in IE8. More info. It’s OK to use them in ES6 modules and server-side code.
3.2 코드가 브라우저상의 스크립트로 실행될때 예약어를 키로 이용하지 마십시오. IE8에서 작동하지 않습니다. More info 하지만 ES6 모듈안이나 서버사이드에서는 이용가능합니다.
5.3 Use object destructuring for multiple return values, not array destructuring.
5.3 복수의 값을 반환하는 경우는 배열의 구조화대입이 아닌 오브젝트의 구조화대입을 이용해 주십시오.
Why? You can add new properties over time or change the order of things without breaking call sites.
왜? 이렇게 함으로써 나중에 호출처에 영향을 주지않고 새로운 프로퍼티를 추가하거나 순서를 변경할수 있습니다.
// badfunctionprocessInput(input){// then a miracle occurs// 그리고 기적이 일어납니다.return[left,right,top,bottom];}// the caller needs to think about the order of return data// 호출처에서 반환된 데이터의 순서를 고려할 필요가 있습니다.const[left,__,top]=processInput(input);// goodfunctionprocessInput(input){// then a miracle occurs// 그리고 기적이 일어납니다.return{ left, right, top, bottom };}// the caller selects only the data they need// 호출처에서는 필요한 데이터만 선택하면 됩니다.const{ left, right }=processInput(input);
// badconsterrorMessage='This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.';// badconsterrorMessage='This is a super long error that was thrown because \of Batman. When you stop to think about how Batman had anything to do \with this, you would get nowhere \fast.';// goodconsterrorMessage='This is a super long error that was thrown because '+'of Batman. When you stop to think about how Batman had anything to do '+'with this, you would get nowhere fast.';
6.4 When programmatically building up strings, use template strings instead of concatenation.
6.4 프로그램에서 문자열을 생성하는 경우는 문자열 연결이 아닌 template strings를 이용해 주십시오.
Why? Template strings give you a readable, concise syntax with proper newlines and string interpolation features.
왜? Template strings 는 문자열 보간기능과 적절한 줄바꿈 기능을 갖는 간결한 구문으로 가독성이 좋기 때문입니다.
// badfunctionsayHi(name){return'How are you, '+name+'?';}// badfunctionsayHi(name){return['How are you, ',name,'?'].join();}// goodfunctionsayHi(name){return`How are you, ${name}?`;}
6.5 Never use eval() on a string, it opens too many vulnerabilities.
6.5 절대로 eval() 을 이용하지 마십시오. 이것은 많은 취약점을 만들기 때문입니다.
Why? Function declarations are named, so they're easier to identify in call stacks. Also, the whole body of a function declaration is hoisted, whereas only the reference of a function expression is hoisted. This rule makes it possible to always use Arrow Functions in place of function expressions.
왜? 이름이 부여된 함수선언은 콜스택에서 간단하게 확인하는 것이 가능합니다. 또한 함수선언은 함수의 본체가 hoist 되어집니다. 그에 반해 함수식은 참조만이 hoist 되어집니다.
이 룰에 의해 함수식의 부분을 항상 Arrow함수에서 이용하는것이 가능합니다.
// immediately-invoked function expression (IIFE)// 즉시 실행 함수식(IIFE)(()=>{console.log('Welcome to the Internet. Please follow me.');})();
7.3 Never declare a function in a non-function block (if, while, etc). Assign the function to a variable instead. Browsers will allow you to do it, but they all interpret it differently, which is bad news bears.
7.3 함수이외의 블록 (if나 while같은) 안에서 함수를 선언하지 마십시오. 변수에 함수를 대입하는 대신 브라우저들은 그것을 허용하지만 모두가 다르게 해석합니다.
请发表评论