inflearn logo
강의

Course

Instructor

JavaScript Beginner: Building a Strong Foundation

8. strict mode, [Coding Time]

"use strict" 아래에 with문을 사용한 코드

320

usemono

6 asked

0

해당 문장을 작성해보았습니다.

 

1. use strict 없을 때

 
let sampleValue = 10;
let sampleObj = {
    name : "Hong",
    age : 22,
    value : "hi i'm value"
}

function doSomething(value) {
    with(value) {
        console.log(value); //hi, im value
    }
}

console.log(doSomething(sampleObj));

없을 때는 정상적으로 동작하고,

신기했던 점은 with문의 표현식 안에 있는 value가 객체 전체를 반환하는 것이 아니라 객체 내부의 프로퍼티에 직접 접근해서 프로퍼티를 반환했습니다.

언뜻 편할 것 같지만, 다른 개발자가 이 코드를 봤을 때 정확히 무엇을 매개변수로 받아들이고 있는지 모른다면, 모호할 수 있는 문장이라고 생각이 들었습니다.

 

2. "use strict"가 있을 때

"use strict"

let sampleValue = 10;
let sampleObj = {
    name : "Hong",
    age : 22,
    value : "hi i'm value"
}

function doSomething(value) {
    with(value) {
        console.log(value); //hi, im value
    }

}

console.log(doSomething(sampleObj));
//Strict mode code may not include a with statement

그리고 "use strict"를 사용하니 이런 에러가 발생했습니다.

스트릭트 모드에서는 with문을 포함하지 않는다는 문구인 것 같은데, 위의 문장의 모호성 때문에 ESLint에서는 with문을 사용하지 못하도록 문법이 바뀐 걸까요?

조금 신기합니다.

oop javascript

Answer 1

1

tonextday

그렇습니다.
strict 모드에서는 with 문을 사용할 수 없도록 바뀌었습니다.
이유에 대해서 중고급 강좌에서 다룹니다.
----------

기본 강좌에서 다룹니다만, let sampleObj = {} 형태는 let보다 const를 사용합니다. 

프론트엔드 부트캠프 가기 전, 짧은 감사 인사드립니다!

2

164

2

섹션10 3. Object 프리미티브 값 구하기에서 질문있습니다.

1

203

2

섹션3의 1강 연산자, 표현식 강의에서 표현식 질문이 있습니다.

0

205

2

섹션 1. 6번째 강의 질문입니다.

1

294

1

선생님 Objcet 질문 있습니다.

0

342

2

forEach문을 활용한 코딩시간 풀이

0

653

1

sort 코딩 시간 풀이

0

337

1

코딩 시간 풀이 올려봅니다.

0

272

1

인덱스 코딩시간 문제풀이

0

420

1

for문 코딩 시간 답제출

0

343

1

3:39 sort에 들어가서 one,two 파라미터질문입니다.

0

222

0

퀴즈 질문 및 정답

0

395

1

오브젝트

0

324

1

인스턴스 목적

1

284

1

[코딩시간 01] 3항 연산자로 작성했을 때, 각 값..?

0

313

1

Undefined === Null; // true???

0

230

1

indexOf의 파라미터에 음수를 작성 했을때에 대한 질문입니다.

0

1096

5

length 값 변환 논리에 대한 질문입니다.

0

248

1

상수 변수 선언에 대해

0

272

1

코딩 시간 (for문) 풀이

0

290

1

Object vs object

1

542

1

코딩 시간 풀이입니다.

0

257

1

log(add(1, 2, 3, 4));

0

209

1

코딩시간 답 제출

0

222

1