1. 아래처럼 변수에 함수를 할당할 경우 바로 실행이 가능하다.
var a = function (){ console.log('aksdfjasfdjlk'); }();
근데 function a() {}같이 함수 선언시에는 안됨.
2. 리스트가 파이썬처럼 편하다.
var a = [0, 1]; a[5] = 5; a.push('rara'); console.log(a);
결과 살펴보기.
3. 클래스같은 함수. 클래스인가?
var m = function(name){ this.name = name; }; m.prototype.get_name = function () { return this.name; }; var mym = new m('cats!'); console.log(mym.get_name());
4. 유명한 클로저 루프 버그. 위 함수하고 아래 함수 따로따로 실행시켜보자.
function countSeconds(howMany) { for (var i=1; i<=howMany; i++) { setTimeout(function() { console.log(i); // 4 4 4 (-_-;) }, i*1000); } }; countSeconds(3); function countSeconds2(howMany) { for (var i=1; i<=howMany; i++) { (function(currentI) { setTimeout(function() { console.log(currentI); // 1 2 3 (^_^) }, currentI*1000); }(i)); } }; countSeconds2(3);
5. ??아래 출력문을 하나씩 주석처리하면서 실행시켜보자. 다른게 없는것 같은데 하나는 에러가 뜬다.
function a() { return { x:'y' }; } function b() { return { y:'z' }; } console.log(b()['y']); console.log(a()['x']);
a함수에서 return뒤에 한줄을 내리고 리턴할것들을 정의하면 그것들이 리턴이 안된다; 반면 b함수는 y:'z'라는 사전을 리턴한다. 이상한 자바스크립트 문법...
'web > back + front' 카테고리의 다른 글
jquery 노드,스타일,속성,이벤트 다루기 (0) | 2017.02.06 |
---|---|
js 정규식 관련. (0) | 2017.02.03 |
css selector관련. (0) | 2017.02.02 |
es6 문법 정리 (0) | 2017.01.31 |
js 기본 지식 (0) | 2017.01.26 |