inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 비기너: 튼튼한 기본 만들기

8. strict 모드, [코딩 시간]

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

312

use_mono

작성한 질문수 6

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

답변 1

1

김영보

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

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

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

2

123

2

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

1

172

2

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

0

160

2

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

1

265

1

선생님 Objcet 질문 있습니다.

0

308

2

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

0

625

1

sort 코딩 시간 풀이

0

300

1

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

0

235

1

인덱스 코딩시간 문제풀이

0

389

1

for문 코딩 시간 답제출

0

314

1

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

0

199

0

퀴즈 질문 및 정답

0

365

1

오브젝트

0

292

1

인스턴스 목적

1

249

1

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

0

277

1

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

0

200

1

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

0

1041

5

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

0

220

1

상수 변수 선언에 대해

0

242

1

코딩 시간 (for문) 풀이

0

261

1

Object vs object

1

509

1

코딩 시간 풀이입니다.

0

204

1

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

0

186

1

코딩시간 답 제출

0

202

1