[자 바스 크 립 트 0 부터 시작] 표현 식 과 연산 자 (2)

7220 단어
연산 자
in 연산 자 는 왼쪽 동작 수가 문자열 이거 나 문자열 로 바 뀔 수 있 기 를 바 랍 니 다. 오른쪽 동작 수가 대상 이 되 기 를 바 랍 니 다.
오른쪽 대상 이 조작 수치 라 는 속성 명 을 가지 고 있다 면 표현 식 은 true 로 돌아 갑 니 다. 예 를 들 어:
var point= {x:1 , y:1 };           //      
"x" in point                             //=>true:        "x"   
"z" in point                             //=>false:        "z"   
"toString" in point                   //=>true :     toString()  


var data= [7,8,9];                  //         
"0" in data                             //=>true:       "0"(   )
1 in data                                //=>true:         
3 in data                                //=>false:     3   

 
eval()
왜 eval 에 "(" + data + ")" 를 추가 합 니까?
이 유 는 eval 자체 의 문제 때문이다.
json 은 '{}' 방식 으로 시작 하고 끝 납 니 다. JS 에 서 는 하나의 구문 블록 으로 처리 되 기 때문에 표현 식 으로 강제 적 으로 변환 해 야 합 니 다.
괄호 를 붙 이 는 목적 은 eval 함수 가 자바 스 크 립 트 코드 를 처리 할 때 괄호 안의 표현 식 (expression) 을 대상 으로 강제로 바 꾸 도록 하 는 것 입 니 다.
문장 (statement) 으로 실행 하 는 것 이 아니다.
예 를 들 어 대상 글자 의 양 {}, 외부 괄호 를 넣 지 않 으 면 eval 은 큰 괄호 를 자바 스 크 립 트 코드 블록 의 시작 과 끝 표시 로 인식 합 니 다. {} 은 빈 문 구 를 실행 한 것 으로 여 겨 집 니 다.그래서 다음 두 가지 집행 결 과 는 다르다.
 
alert(eval("{}");                          // return undefined
alert(eval("({})");                        // return object[Object]

 
이런 표기 법 은 JS 에 서 는 곳곳에서 볼 수 있다.
예: (function () {} ();  폐쇄 작업 할 때 등.
 
조건 연산 자 (?:)
조건 연산 자 는 자 바스 크 립 트 에서 유일한 삼원 연산 자 (세 개의 조작 수) 로 때로는 '삼원 연산 자' 라 고 직접 부른다.
보통 이 연산 자 는 '?:' 라 고 쓰 여 있 습 니 다. 물론 코드 에 서 는 이렇게 간략하게 쓰 지 않 습 니 다. 이 연산 자 는 세 개의 조작 수 를 가지 고 있 기 때 문 입 니 다.
첫 번 째 조작 수 는 '?' 이전에 두 번 째 조작 수 는 '?' 와 ':' 사이 에 있 고 세 번 째 조작 수 는 ':' 다음 에 있다.
greeting= "hello "+ (username ? username : "there");
//      if         ,         :
greeting ="hello ";
if (username)
       greeting +=username;
else
       greeting +="there";

 
type: of 연산 자
type: of 는 1 원 연산 자 입 니 다. 지연 작업 수 앞 에 놓 여 있 습 니 다. 작업 자 는 임의의 유형 이 라 고 할 수 있 습 니 다. 반환 값 은 작업 수 형식 을 나타 내 는 문자열 입 니 다.
 
임의의 값 은 type: of 연산 자 이후 의 반환 값 입 니 다.
x                             typeof x
undefuned                "undefined"
null                          "object"
true 또는 false               "boolean"
임의의 숫자 또는 NaN            "number"
임의의 문자열                 "string"
임 의 함수                    "function"
임 의 내장 대상 (비 함수) "object"
 
type: of 연산 자 는 괄호 를 달 수 있 습 니 다. type: of 는 연산 자 키워드 가 아 닌 함수 명 처럼 보일 수 있 습 니 다. 
typeof(x) 
 
 
delete 연산 자
delete 는 대상 속성 이나 배열 요 소 를 삭제 하 는 데 사용 되 는 원 연산 자 입 니 다.
그것 은 삭제 작업 을 하 는 것 이지 가치 있 는 것 을 되 돌려 주 는 것 이 아니다.예 를 들 면:
var o = {x: 1, y : 2};           //      
delete o.x;                            //      
"x"  in  o                               //=〉false :             


var a = {1,2,3};                   //      
delete a[2];                           //          
2 in a                                    //=〉false :  2         

a.length                                //=〉3 :          ,   a={1,2}

var 를 통 해 설명 한 변 수 를 삭제 할 수 없 으 므 로 주의해 야 할 것 도 있 습 니 다.
예 를 들 면:
var o= {x:1 , y:2};   //
delete o.x;                 //        ,  true
typeof o.x;               //     ,  “undefined”    
delete o.x;               //        ,  true
delete o;                  //      var     ,   false,          


delete 1;                 //            true
this.x = 1;               //          ,      var 
delete x;               //     ,        true ,           ,  “delete this.x ”  
x ;                        //     ,    x

좋은 웹페이지 즐겨찾기