이벤트 리스너로 콜백함수 등록한거니까 그 함수를 실행하는 시점의 this에 setState랑 기타등등이 있을리 없지
ryu(ashrad)2022-03-25 15:38
답글
아하 다시 보니까 메서드가 아니고 그냥 일반 콜백함수니까 undefiend로 바인딩되는거군여 자스 딥다이브 this 부분 다시 읽어봐야겠네여 ㄳ합니다
익명(220.75)2022-03-25 15:48
this.setState({number : this.state.number})로 해보셈
익명(121.170)2022-03-25 15:32
답글
넵 감사합니닷
익명(220.75)2022-03-25 15:37
일반 함수로 정의할땐 런타임때 동적으로 바인딩 됨. 내가 이해하기론 콜백은 global excution context에 정의되어있기에 콜백에 일반함수로 this.setState로 걸어줄 시 undefined를 가리킬거임. 왜냐면 es6부터 global excution context를 가리키는 this는 undefined이기에...
프론트공부(112.187)2022-03-25 15:59
답글
반면 애로우펑션의 경우 컴파일 시점에 정적으로 바인딩됨. 즉 this는 상위 execution context의 렉시컬 환경을 참조함. 즉 정의되는 시점에서 자신을 둘러싸는 함수의 변수를 사용함. 따라서 콜백함수로 사용할 시 이미 this가 런타임때 정적으로 바인딩 되어서 잘 작동하는거...
프론트공부(112.187)2022-03-25 16:03
답글
로 알고잇지만 솔직히 this가 너무 어려워서 막 헷갈림 ㅠ.... 일단 요즘 this공부하는중이라 내가 이해한대로 설명해봤는데 틀리면 다른분이 잘 알려주길...
프론트공부(112.187)2022-03-25 16:03
답글
this의 바인딩은 함수 호출 방법에 따라 달라진다는데요 메서드로 호출되면 상위 객체, 생성자 함수로 호출되면 생성할 인스턴스, 일반 함수는 전역객체인데 strict mode가 적용된 일반 함수 내부의 this에는 undefiend로 바인딩된데요
익명(220.75)2022-03-25 16:05
답글
근데 저건 호출된것도 아니고 그냥 일반 함수 표현식인데도 undefiend가
익명(220.75)2022-03-25 16:05
답글
뜨네여
익명(220.75)2022-03-25 16:05
답글
이게 콜백함수의 경우가 좀 특별해서 그걸 좀 알아보셔야 할거같아요. 그냥 가볍게 콜백함수로 일반함수가 전달시 글로벌 실행컨텍스트를 가리키므로(동적 바인딩) undefined고 애로우펑션은 정의된 시점에서 this가 정해지기에(정적바인딩)...
프론트공부(112.187)2022-03-25 16:11
답글
콜백파트땜에 this가 너무 어렵더라구요... 그래서 콜백에서 this로 메서드 호출하려면 애로우펑션을 쓰거나 명시적 바인딩을 하거나 둘중 하나를 해야하는...
프론트공부(112.187)2022-03-25 16:13
답글
this.setState가 함수를 호출하고 있는건가요 ? 호출은 obj() 이런식으로 하는거아닌가요 ?
익명(220.75)2022-03-25 16:15
답글
암툰 이부분은 저도 지금 공부하는 부분이라 좀 더 찾아봐야겟네요...
아우 어렵다 그냥 제 말은 잊어주세요!
프론트공부(112.187)2022-03-25 16:17
답글
말을 잘못햇엇슴... 버튼 클릭할때마다 해당 콜백를 호출한다고 말하려고 안그래도 삭제햇는데... 암튼 제가 이해한대로는 버튼을 클릭시 해당 일반함수가 호출되는데, 일반함수이기에 undefined가 바인딩되어서 안 된다고 다시 말하려고 햇슴
근데 어렵네요 ㄹㅇ
프론트공부(112.187)2022-03-25 16:18
답글
근데 저도 잘 아는부분이 아니라 한번 찾아보고 다시 설명하려고 햇슴 ㅇㅇ .. this는 할때마다 어렵네요...ㅜㅜㅜ 한번 좀 더 찾아본다음 틀린 설명이었다면 다시 말씀드릴게요!
화살표함수에서의 this랑 함수표현식에서의 this가 다르기 때문이겠지요
메서드 안에서의 this는 객체랑 바인딩 되는거 아닌가요?? 화살표 함수에서 this는 뭐랑 바인딩 되나요???
함수 호출시에 this가 정해지는 거랑 함수 선언시에 정해지는 차이가 있음
메서드 안에서의 this는 객체랑 바인딩 되는거 아닌가요?? 화살표 함수에서 this는 뭐랑 바인딩 되나요???
이벤트 리스너로 콜백함수 등록한거니까 그 함수를 실행하는 시점의 this에 setState랑 기타등등이 있을리 없지
아하 다시 보니까 메서드가 아니고 그냥 일반 콜백함수니까 undefiend로 바인딩되는거군여 자스 딥다이브 this 부분 다시 읽어봐야겠네여 ㄳ합니다
this.setState({number : this.state.number})로 해보셈
넵 감사합니닷
일반 함수로 정의할땐 런타임때 동적으로 바인딩 됨. 내가 이해하기론 콜백은 global excution context에 정의되어있기에 콜백에 일반함수로 this.setState로 걸어줄 시 undefined를 가리킬거임. 왜냐면 es6부터 global excution context를 가리키는 this는 undefined이기에...
반면 애로우펑션의 경우 컴파일 시점에 정적으로 바인딩됨. 즉 this는 상위 execution context의 렉시컬 환경을 참조함. 즉 정의되는 시점에서 자신을 둘러싸는 함수의 변수를 사용함. 따라서 콜백함수로 사용할 시 이미 this가 런타임때 정적으로 바인딩 되어서 잘 작동하는거...
로 알고잇지만 솔직히 this가 너무 어려워서 막 헷갈림 ㅠ.... 일단 요즘 this공부하는중이라 내가 이해한대로 설명해봤는데 틀리면 다른분이 잘 알려주길...
this의 바인딩은 함수 호출 방법에 따라 달라진다는데요 메서드로 호출되면 상위 객체, 생성자 함수로 호출되면 생성할 인스턴스, 일반 함수는 전역객체인데 strict mode가 적용된 일반 함수 내부의 this에는 undefiend로 바인딩된데요
근데 저건 호출된것도 아니고 그냥 일반 함수 표현식인데도 undefiend가
뜨네여
이게 콜백함수의 경우가 좀 특별해서 그걸 좀 알아보셔야 할거같아요. 그냥 가볍게 콜백함수로 일반함수가 전달시 글로벌 실행컨텍스트를 가리키므로(동적 바인딩) undefined고 애로우펑션은 정의된 시점에서 this가 정해지기에(정적바인딩)...
콜백파트땜에 this가 너무 어렵더라구요... 그래서 콜백에서 this로 메서드 호출하려면 애로우펑션을 쓰거나 명시적 바인딩을 하거나 둘중 하나를 해야하는...
this.setState가 함수를 호출하고 있는건가요 ? 호출은 obj() 이런식으로 하는거아닌가요 ?
암툰 이부분은 저도 지금 공부하는 부분이라 좀 더 찾아봐야겟네요... 아우 어렵다 그냥 제 말은 잊어주세요!
말을 잘못햇엇슴... 버튼 클릭할때마다 해당 콜백를 호출한다고 말하려고 안그래도 삭제햇는데... 암튼 제가 이해한대로는 버튼을 클릭시 해당 일반함수가 호출되는데, 일반함수이기에 undefined가 바인딩되어서 안 된다고 다시 말하려고 햇슴 근데 어렵네요 ㄹㅇ
근데 저도 잘 아는부분이 아니라 한번 찾아보고 다시 설명하려고 햇슴 ㅇㅇ .. this는 할때마다 어렵네요...ㅜㅜㅜ 한번 좀 더 찾아본다음 틀린 설명이었다면 다시 말씀드릴게요!
감사합니다 딥다이브로 자스 살펴보는데 함수부분이나 this 어렵네여 .. 프론트님은 기술스택 뭐뭐 공부하시나요 ?? 책이나 공부방법좀 알려주세요
전 요즘 .... 코테만 존나 푸는중인데, 안그래도 리액트 인강 하나 샀서요
리액트를 다루는 기술 리덕스 빼고 다 읽어서 .. 리덕스 너무 어려워서 일단 컨텍스트 조지기를....ㅠ
https://www.udemy.com/course/best-react/learn/lecture/28518339?start=555
인강
저거 다들으면서 코테풀건데, 인강끝나면 이제 저도 포폴만들려구요! 백엔드 구해야죵...ㅠ 그게 제일 큰일..
코테할떄 자스로 하시나요 ? 코테는 어떤식으로 공부해야되는지좀 알려주세요
혹시 프론트 공부 몇년하셨나요 ?