>웹 프론트엔드 >JS 튜토리얼 >JavaScript_Basic 지식의 {} 문 블록에 대한 자세한 설명

JavaScript_Basic 지식의 {} 문 블록에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:13:151440검색

오늘은 json 문자열을 파싱하는 방법과 eval() 메서드를 사용하는 방법을 배웠습니다. 문자열을 파싱할 때 왜 괄호를 추가해야 하나요? 어찌할 바를 모르는. JavaScript의 {} 문 블록은 모호하며, 괄호를 추가하지 않으면 오류가 발생한다는 사실이 밝혀졌습니다. 이 모호함을 이해하는 것은 JavaScript 코드를 이해하는 데 큰 도움이 됩니다.

1. {} 문 블록의 두 가지 의미

은 명령문 블록을 나타냅니다

a. {}를 사용하여 자바스크립트로 코드를 묶어 편집기에서 코드 관리를 용이하게 할 수 있습니다. JavaScript에는 블록 수준 범위가 없으므로 이 접근 방식은 무해합니다.

{
//some code...
}


b. JavaScript에서는 조건문, 루프 문 및 함수 모두 코드를 통합하기 위해 {} 문 블록이 필요합니다

객체 리터럴

var box = {
  name:'kuoaho',
  age:21 
}

//이때 [code]는 표현식으로 사용되며 변수에 대입 가능합니다
//사실 객체 리터럴은 객체 값을 생성할 수 있는 표현식입니다

2. 객체 리터럴을 할당 표현식으로 사용하지 않으면 어떻게 되나요?

예:

  {name:'kuoao'}    //没有报错,但是也没有创建对象
  {name:'kuohao',age}  //报错

위에서 볼 수 있듯이 객체 리터럴은 표현식으로만 할당할 수 있습니다. 첫 번째 작성 방법에는 문제가 없지만 JavaScript에서는 이를 label 문으로 구문 분석합니다.

분석:

  {name:'kuoao'}

    //{}一个语句块
   // name:'kuohao',一个label语句,用于标记for循环

3. 그런데 또 문제가 옵니다...

{
name:'kuohao',
age:21
}

//왜 오류가 발생하나요? 이것이 객체 리터럴이 작성되는 방식이 아닌가요?
JavaScript에서 {}의 모호성으로 인해 {}는 객체 리터럴일 뿐만 아니라 코드 블록으로도 간주됩니다.

analysis:
  {
  name:'kuohao',
  age:21
  }

코드 블록, 두 개의 레이블 문, 쉼표가 없으면 전혀 문제가 없으므로 핵심은 쉼표로 두 문을 구분해야하므로 JavaScript는 이것이 구문인지 판단합니다. 오류

4. 올바른 글쓰기

({
  name:'kuohao',
  age:21
  })

  //正确的写法

()는 명령문을 명령문 표현식이라고 하는 표현식으로 변환합니다. 객체 리터럴은 표현식이 아닌가요? 변환하려면 왜 ()가 필요합니까?

괄호를 추가하면 이 모호함이 제거될 수 있습니다. 괄호 안의 코드가 표현식 평가로 변환되어 반환되므로 명령문 블록은 객체 리터럴이 되고 객체 리터럴은 다음과 같이 존재해야 한다고 결론을 내릴 수도 있습니다. 표현

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.