모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다.1.this자바스크립트에서 함수는 arguments 객체와 this를 암묵적으로 받는다.Java같은 언어에서 this는 객체 자기자신에대한 참조값이지만 JavaScript에서 this는 바인딩되는 객체가 함수 호출 방식에 따라 달라진다.함수를 선언할때 결정되는것이 아니라 호출될때 결정된다. 2.함수호출 this전역객체는 전역 스코프를 갖는 전역 변수를 프로퍼티로 소유한다.이때 this는 전역객체에 바인딩된다.이때 브라우저에서는 window, 터미널에서는 global 객체를 의미한다.this === window // truethis === global // true 전역 함수, 내부함수, 메소드의 내부함수, 콜백함수 모두 외부 함..
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다.1.strict mode직역하면 엄격한 모드로 자바스크립트 언어의 문법을 보다 엄격히 적용하여 기존에는 무시되던 오류를 명시적인 에러로 발생시킨다.'use strict';function foo(){ x=10}foo();Uncaught ReferenceError ReferenceError: x is not defined 🎈참고자료https://poiemaweb.com/js-strict-mode
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다. 1.스코프(Scope)스코프는 유효범위를 뜻한다. 전역 변수:어디에든 참조할 수 있다.지역 변수:그 지역과 그 지역의 하부 지역에서만 참조할 수 있다. 2.자바스크립트 스코프대부분의 언어는 {} 내에서 유효한 블록레벨 스코프를 사용한다.(자바스크립트에서는 let keyword로 사용가능)하지만 자바스크립트는 기본적으로 함수 레벨 스코프를 따른다.함수 코드 블록 내에서 선언된 변수는 함수코드 블록내에서만 참조할수있다.때문에 블록내에서 선언되었다고 해도 함수밖에서 선언된 변수는 모두 전역 스코프를 가진다.function Human(){ var x=3; document.write(x)}Human()//document.write..
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다. 1.프로토타입(Prototype)프로토타입 기반 객체지향 프로그래밍 언어인 자바스크립트는 클래스 없이도 객체를 생성할수있다.모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어있고 부모객체의 프로퍼티, 메소드를 상속받아 사용할수있다.이때 이런 부모객체를 프로토타입 객체라고 부른다. student 객체는 hasOwnProperty 메소드가 없지만 프로토타입 객체에게 받았기에 사용할수있다.function student(name,age){ this.name=name; this.age=age;}document.write(student.hasOwnProperty('name')) 2.[[Prototype]]자바스크립트의..
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다. 1.typeof피연산자의 데이터 타입을 문자열로 반환document.write(typeof('a')+"")document.write(typeof(1)+"")document.write(typeof(true)+"")document.write(typeof(null)+"") 2. Object.prototype.toString.call 모든 타입의 값의 타입을 알아낼수있다.document.write(Object.prototype.toString.call('a')+"");document.write(Object.prototype.toString.call(1)+"");document.write(Object.prototype.toString.ca..
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다. 1.함수 객체의 프로퍼티함수 또한 객체이므로 프로퍼티를 가질수있다.function run(){ document.write(10 +"")}run.event="달리기";run.fastrun= function(leng){ document.write(leng*100+"")}run()document.write(run.event+"")run.fastrun(10) 2.caller 프로퍼티caller 프로퍼티는 자신을 호출한 함수를 의미한다.function people(func){ document.write(func())}function bar(){ return bar.caller;}people(bar)document.wri..
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다. 1.변경불가성(Immutability)객체가 생성된 이후 그 상태를 변경할 수 없는 디자인 패턴 1-1.원시타입,객체 타입JavaScript의 원시타입은 변경 불가능한 값이다.(Boolean,null,undefined,Number,String,Symbol)원시타입 외의 값은 객체 타입으로 변경 가능한값이다.(객체는 새로운 값을 다시만들필요없이 변경가능하다.) 변경 불가능한 값인 문자열은 다음 코드의 str 값은 문자열 hello의 메모리 주소를 가르키고있다가 hi문자열의 메모리 주소를 가르키도록 변경한다. slice 메소드를 사용할때도 직접 str의 문자열을 변경할수없기에 새로운 문자열을 생성하여 반환한다.var str="hello..
모던 자바스크립트 Deep Dive를 참고하여 학습,작성하였습니다. 1.참조타입(Reference Type)object 타입은 참조타입으로 객체의 연산이 실제값이 아닌 참조값으로 처리된다.다음 경우에는 a와 b는 같은 객체를 참조하지만 c는 다른 객체를 참조한다.(아래 코드에서 b=a 를 한다는것은 복사가 아니라 같은 객체를 참조시킨다는 뜻이다. 때문에 b.val를 바꿨을때 a.val 또한 같은 객체를 참조하기 때문에 바뀐다.)var a={ val:5}var b=a;var c={ val:5}document.write(a.val+" "+b.val+"")document.write((a==b)+"");document.write((a==c)+"");b.val=10document.write(a.val)..