프로그램개발/ClientSide(JavaScript,Angular,Vue)

골때리는 자바스크립트.9

크레도스 2014. 2. 6. 15:31

오랜만이군요. 자. 다시 골때리는 자바스크립트의 세계가 돌아왔습니다. 
오랜만에 돌아온 만큼 오늘은 조금 골이 살짝 때리는 팁을 드리도록 하겠습니다. 

HTML5가 성행하기 시작하면서 새로운 태그와 새로운 속성이 우후죽순 나오고 있습니다. 그런 만큼 크로스 브라우저에 대한 노력은... 
굳이 안해도 될것같긴 하겠지만ㅋ 

배열에 push란 함수가 있는지 없는지 확인해보기 위해서는 몇가지 방법이 있겠죠. 
!!['my','name','is','array'].push 
!!Array.prototype.push 
'push' in ['me','too'] 
'push' in Array.prototype 

1번꺼는 만들어진 배열에 push란 메서드가 있나 확인해보는 거고 
2번꺼는 배열 동적 메서드에 push가 있는지 확인해보는 거고, 
3번꺼는 만들어진 배열에 push란 메서드가 있나 확인해보는 거고 
4번꺼는 배열 동적 메서드에 push가 있는지 확인해보는 거죠. 

어때요. 참 쉽죠? 
다들 표정이 왜그래요? 자바스크립트로 배열만드는게 쉼표하나빠져서 배열 다뒤지는사람처럼? 

'push' in ['me','too'] 이건 ㅤㅁㅝㅇ미? 
in 연산자가 무엇일까요? 
in 키워드는 해당 객체에 키 또는 하위 요소가 있는지 알아내주는 녀석입니다. 
in 키워드는 주로 이럴때 쓰죠. 

for(var x in object) ... 

자바스크립트를 시작할때쯤 반복문 배울때 한번씩은 배워봤을겁니다. 
여기서 주로 JSON 키를 얻거나 특정 객체의 속성을 검색하는데 주로 쓰였죠. 
네 맞습니다. 반복문 외에도 쓸거리는 있죠. 

근데 왜 쓰는 방법이 'string' in object 인데 속성이름을 문자열로 할까요? 
반복문을 쓰다보면 받아오는 변수는 키를 문자열로 받죠? 그거와 똑같은 효과입니다. 

그럼 어떨때 쓰는 게 좋을까요? 

일단 !!['array'].push 보다는 'push' in ['array'] 이게 거 가독성이 있어보이죠. 
거기다가 반환되는값은 bool값이라 true나 false기 때문에 속성 찾는데 있어서 안전하죠. 
즉, 속성 검색하다 쓸데없는 현상으로 오류날걱정은 전혀 안해도 된다는 겁니다. 

이상입니다. 오늘은 경험자들에게 골때려서 되새기고, 초보에게는 골때려서 또다른 기능을 얻어가는 골때리는 자바스립트의 세계. 
다음에는 더욱더 골때려서 머리 깨지는데 더욱 더 도움이 될 수 있는 컨텐츠로 찾아뵙겠습니다.

출처 : javascript - 웹미니 (http://www.webmini.net/?mid=javascript&document_srl=196959)