최고의 자바 스크립트 구문 설탕
-
05-07-2019 - |
문제
보석은 다음과 같습니다.
리터럴 :
var obj = {}; // Object literal, equivalent to var obj = new Object();
var arr = []; // Array literal, equivalent to var arr = new Array();
var regex = /something/; // Regular expression literal, equivalent to var regex = new RegExp('something');
기본값 :
arg = arg || 'default'; // if arg evaluates to false, use 'default', which is the same as:
arg = !!arg ? arg : 'default';
물론 우리는 익명의 기능을 알고 있지만 리터럴로 취급하고 그 자리에서 (폐쇄로) 실행할 수있는 기능은 훌륭합니다.
(function() { ... })(); // Creates an anonymous function and executes it
의문: JavaScript에서 다른 훌륭한 구문 설탕은 무엇입니까?
해결책
현재 DateTime을 밀리 초로 가져 오기 :
Date.now()
예를 들어, 코드 섹션의 실행 시간에 다음과 같습니다.
var start = Date.now();
// some code
alert((Date.now() - start) + " ms elapsed");
다른 팁
객체 멤버십 테스트 :
var props = { a: 1, b: 2 }; ("a" in props) // true ("b" in props) // true ("c" in props) // false
Mozilla (및 IE7)에서는 다음을 사용하여 XML 상수를 만들 수 있습니다.
var xml = <elem></elem>;
변수도 대체 할 수 있습니다.
var elem = "html"; var text = "Some text"; var xml = <{elem}>{text}</{elem}>;
익명의 기능과 폐쇄를 사용하여 개인 변수 (정보 숨기기) 및 관련된 GET/세트 방법을 생성합니다.
var getter, setter;
(function()
{
var _privateVar=123;
getter = function() { return _privateVar; };
setter = function(v) { _privateVar = v; };
})()
프로토 타입 상속을 통해 기본 JavaScript 유형을 확장 할 수 있습니다.
String.prototype.isNullOrEmpty = function(input) {
return input === null || input.length === 0;
}
사용 ===
가치를 비교합니다 그리고 유형:
var i = 0; var s = "0"; if (i == s) // true if (i === s) // false
멀티 라인 문자열 :
var str = "This is \ all one \ string.";
공백을 문자열에 추가하지 않으면 서 후속 선을 들여 줄 수 없기 때문에 사람들은 일반적으로 플러스 연산자와 연결하는 것을 선호합니다. 그러나 이것은 좋은 것을 제공합니다 여기 문서 능력.
배열의 길이를 조정하십시오
길이 속성은 a입니다 읽지 않습니다. 배열의 크기를 늘리거나 줄일 수 있습니다.
var myArray = [1,2,3];
myArray.length // 3 elements.
myArray.length = 2; //Deletes the last element.
myArray.length = 20 // Adds 18 elements to the array; the elements have the empty value. A sparse array.
빈 배열에서 결합 메소드를 활용하여 "-"-"와 같은 문자열을 반복합니다.
var s = new Array(repeat+1).join("-");
"---"가 반복 될 때 == 3.
기본 연산자처럼 ||
가드 운영자입니다. &&
.
answer = obj && obj.property
반대로
if (obj) {
answer = obj.property;
}
else {
answer = null;
}
var tags = {
name: "Jack",
location: "USA"
};
"Name: {name}<br>From {location}".replace(/\{(.*?)\}/gim, function(all, match){
return tags[match];
});
String Replace의 콜백은 유용합니다.
function Foo(bar)
{
this._bar = bar;
}
Foo.prototype =
{
get bar()
{
return this._bar;
},
set bar(bar)
{
this._bar = bar.toUpperCase();
}
};
우리에게 주어지다:
>>> var myFoo = new Foo("bar");
>>> myFoo.bar
"BAR"
>>> myFoo.bar = "Baz";
>>> myFoo.bar
"BAZ"
이것은 JavaScript 독점은 아니지만 세 줄의 코드와 같이 저장합니다.
check ? value1 : value2
Levik의 예에 대해 조금 더 :
var foo = (condition) ? value1 : value2;
그만큼 배열#foreach JavaScript 1.6
myArray.forEach(function(element) { alert(element); });
다음 obj || {기본값 : true} 구문 :
이것으로 당신의 기능을 호출하십시오 : hello (revelseone && indredtwo && 니드 터프리) 하나의 매개 변수가 정의되지 않았거나 false 인 경우 hello (false)라고 부릅니다. 때때로 유용한
고정 된 구성 요소 부품 세트가있는 구문 분석 상황에서 :
var str = "John Doe";
"파괴 할당"Synatx를 사용하여 결과를 변수에 직접 할당 할 수 있습니다.
var [fname, lname] = str.split(" ");
alert(lname + ", " + fname);
이는 다음보다 조금 더 읽기 쉽습니다.
var a = str.split(" ");
alert(a[1] + ", " + a[0]);
번갈아:
var [str, fname, lname] = str.match(/(.*) (.*)/);
이것은 a입니다 JavaScript 1.7 특징. 현재 Mozilla 2.0+ 및 Chrome 6+ 브라우저입니다.
즉시 호출 된 화살표 기능 :
var test = "hello, world!";
(() => test)(); //returns "hello, world!";
나는 잊었다 :
(function() { ... }).someMethod(); // Functions as objects
간단히 사용하여 익명의 개체를 만듭니다 : ({})
예 : 객체가 메소드의 가치가 있는지 알아야합니다.
var hasvalueof = !! ({}).
보너스 구문 설탕 : 이중-노트 '!!' 거의 모든 것을 부울으로 변환하는 것.
나는 JSON 문자열을 평가하고 완전히 인구가 많은 데이터 구조를 되 찾는 것을 좋아합니다. 나는 모든 것을 적어도 두 번 이상 써야하는 것을 싫어합니다 (즉, 다시 한 번, Mozilla의 경우).
자주 사용되는 키워드 (또는 모든 방법)를 THS와 같은 간단한 변수로 자주 사용합니다.
var $$ = document.getElementById;
$$('samText');
반 "유창한 인터페이스"를 제공하는 JavaScript의 날짜 클래스. 이것은 날짜 클래스에서 날짜 부분을 직접 추출 할 수 없다는 것을 보완합니다.
var today = new Date((new Date()).setHours(0, 0, 0, 0));
다음은 실제로 날짜 개체가 아닌 수치 값 만 제공하기 때문에 완전히 유창한 인터페이스가 아닙니다.
var today = new Date().setHours(0, 0, 0, 0);
기본 폴백 :
var foo = {}; // empty object literal
alert(foo.bar) // will alert "undefined"
alert(foo.bar || "bar"); // will alert the fallback ("bar")
실용적인 예 :
// will result in a type error
if (foo.bar.length === 0)
// with a default fallback you are always sure that the length
// property will be available.
if ((foo.bar || "").length === 0)
방금 발견 한 것은 다음과 같습니다. 널 확인하기 전에 NULL Check :
a = b && b.length;
이것은 더 짧은 것과 같습니다.
a = b ? b.length : null;
가장 좋은 점은 속성 체인을 확인할 수 있다는 것입니다.
a = b && b.c && b.c.length;
목록으로 작업하는 것이 얼마나 단순한 지 좋아합니다.
var numberName = ["zero", "one", "two", "three", "four"][number];
그리고 해시 :
var numberValue = {"zero":0, "one":1, "two":2, "three":3, "four":4}[numberName];
대부분의 다른 언어에서 이것은 상당히 무거운 코드 일 것입니다. 가치 기본값도 사랑 스럽습니다. 예를 들어 오류 코드보고 :
var errorDesc = {301: "Moved Permanently",
404: "Resource not found",
503: "Server down"
}[errorNo] || "An unknown error has occurred";
int to string cast
var i = 12;
var s = i+"";
element.innerHTML = ""; // Replaces body of HTML element with an empty string.
요소의 모든 자식 노드를 삭제하는 바로 가기.
불가능한 경우 문자열을 정수로 변환하십시오.
0 | "3" //result = 3
0 | "some string" -> //result = 0
0 | "0" -> 0 //result = 0
어떤 경우에는 0, 대부분 0이 나쁜 결과로 간주되는 경우 유용 할 수 있습니다.
var a = 10;
var b = 20;
var text = `${a} + ${b} = ${a+b}`;
그럼 텍스트 변수는 다음과 같습니다!
10 + 20 = 30