>  기사  >  웹 프론트엔드  >  JavaScript 고급 프로그래밍 읽기 노트 (5) ECMAScript의 연산자 (1)_javascript 기술

JavaScript 고급 프로그래밍 읽기 노트 (5) ECMAScript의 연산자 (1)_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:55:561275검색

2.9 연산자
2.9.1 단항 연산자
단항 연산자에는 연산할 개체나 값인 단 하나의 매개변수만 있습니다.

1. 삭제: 이전에 정의된 객체 속성이나 메서드에 대한 참조를 삭제하지만, 이 연산자는 개발자가 정의하지 않은 속성과 메서드를 삭제할 수 없습니다. 예:

코드 복사 코드는 다음과 같습니다.

var o=new Object; 🎜>o .name="Nicholas";
o.show=function(){
return "test";
console.log(o.name);
console.log(o.show()); //outpus 테스트

delete o.name;
delete o.show; ); / /outpus 정의되지 않음
console.log(o.show()); //outpus TypeError: o.show는 함수가 아닙니다.

delete o.toString; o.toString ()); //outpus [object Object]


2. void: 어떤 값에 대해서도 정의되지 않은 값을 반환합니다. 이 연산자는 일반적으로 출력해서는 안되는 값을 출력하는 것을 방지하는 데 사용됩니다.

링크에서 새창을 열면 코드는 다음과 같습니다.
클릭 나
링크를 클릭하면 [개체]가 새 창에 나타납니다. 이는 window.open() 메서드가 새로 열린 창에 대한 참조를 반환하기 때문입니다. 그러면 개체가 표시될 문자열로 변환됩니다. 이 결과를 방지하려면 void 연산자를 사용하여 window.open() 함수를 호출할 수 있습니다.

Click Me
 3. 사전 증가/사전 감소 연산자: C에서 빌린 두 개의 연산자. 예:




코드 복사
코드는 다음과 같습니다. var iNum=10; >console.log( iNum); //outpus 11은 iNum=iNum 1과 동일 console.log(iNum); //outpus 11 console.log(--iNum); //outpus 10은 다음과 동일 iNum=iNum -1
console.log(iNum); //outpus 10


4. 사후 증가/사후 감소 연산자: C에서 빌린 두 연산자. 사전 증가/사전 감소와 마찬가지로 값에 1을 더하거나 뺍니다. 차이점은 후위 연산자는 이를 포함하는 표현식을 계산한 후 증가 또는 감소 연산을 수행한다는 것입니다. 예:



코드 복사

코드는 다음과 같습니다. var iNum=10; >iNum- - console.log(iNum); //outpus 9 console.log(iNum--); //outpus 9 console.log(iNum); >iNum
console.log(iNum); //outpus 9
console.log(iNum ); //outpus 9
console.log(iNum); //outpus 10


5. 1원 덧셈과 1원 뺄셈: 사용법은 고등학교 수학에서 배운 것과 같습니다. 1원 덧셈은 숫자에 영향을 미치지 않으며, 1원 뺄셈은 숫자 값을 부정하는 것입니다. 그러나 단항 반환 및 단항 뺄셈은 문자열에 대해 연산을 수행할 때 parsInt()와 유사합니다. 주요 차이점은 "ox"로 시작하는 문자열의 경우에만 단항 연산자가 이를 10진수 값으로 변환한다는 것입니다. 예:




코드 복사

코드는 다음과 같습니다.
var iNum=25; >iNum= iNum; console.log(iNum); //outpus 25 var sNum="50"; console.log(typeof sNum); console.log( sNum); //outpus 50 console.log(typeof sNum); //출력 번호
var sNum1="017"; 🎜>console .log(-sNum1); //outpus -17
console.log(-sNum2); //outpus -11


2.9.2 비트 연산자
1. 비트 연산 NOT: (~)로 표현되며, 처리 과정은 다음과 같습니다.

(1) 피연산자를 32비트 숫자로 변환

(2) 이진 형식을 32비트 숫자로 변환 1의 보수;

 (3) 이진 보수를 부동 소수점 숫자로 변환

예:




코드 복사


코드는 다음과 같습니다.


var iNum1=25; //25는 0000 0000 0000 0000 0000 0000 0001 1001
var iNum2=~iNum1; /conver to 1111 1111 1111 1111 1111 1111 1110 0110
console.log(iNum2); //outpus -26
//비트 연산자 NOT은 기본적으로 숫자를 부정한 다음 1을 뺍니다. 코드도 작동합니다. var iNum3=25; var iNum4=-iNum3-1; console.log(iNum4)
2. AND: by(&)는 숫자의 이진 형식을 직접 계산함을 나타냅니다. 규칙은 모두 1인 경우에만 1이고, 그렇지 않으면 0입니다. 예:




코드 복사


코드는 다음과 같습니다.

var iNum1=25; //25는 0000 0000 0000 0000 0000 0000 0001 1001
var iNum2=iNum1&3; // 3은 0000 0000 0000 0000 0000 0000 0000 0011
console.log(iNum2); // 그리고 0000 0000 0000 0000 0000 0000 0000 0001 출력 1

 3. 비트 연산 OR: (|)로 표시, 숫자의 이진 형식을 직접 계산 . 규칙은 모두 0인 경우에만 0이고, 그렇지 않으면 1입니다. 예:
코드 복사 코드는 다음과 같습니다.

var iNum1=25; 25는 0000 0000 0000 0000 0000 0000 0001 1001
var iNum2=iNum1|3; // 3은 0000 0000 0000 0000 0000 0000 0000 0011
> 4. 비트 연산 XOR: by ( ^)는 숫자의 이진 형식이 직접 계산된다는 의미입니다. 규칙은 숫자가 1에 저장되어 있을 때만 1이고, 그렇지 않으면 0입니다. 예:

코드 복사 코드는 다음과 같습니다.
var iNum1=25; 25는 0000 0000 0000 0000 0000 0000 0001 1001
var iNum2=iNum1^3; // 3은 0000 0000 0000 0000 0000 0000 0000 0011
console.log(i Num2); // xor는 0000 0000 0000 0000 0000 0000 0001 1010 출력 26

5. 왼쪽 시프트 연산: (<<)로 표시, 숫자의 모든 숫자를 지정된 양만큼 왼쪽으로 이동, 유지 부호 비트, 왼쪽으로 이동 1비트는 2를 곱하는 것과 같습니다.
6. 부호 있는 오른쪽 시프트 연산: (>>)로 표시되며 숫자의 모든 자릿수를 지정된 양만큼 오른쪽으로 이동하고 부호 비트를 유지하며 오른쪽으로 한 자리 이동하는 것은 나누기와 같습니다. 2까지.
7. 부호 없는 오른쪽 이동 연산: (>>>)로 표시되며 숫자의 모든 자릿수를 지정된 양만큼 오른쪽으로 이동합니다. 양수는 부호 있는 오른쪽 시프트로 정확하게 처리되고, 음수는 양수로 처리됩니다.
예:

코드 복사 코드는 다음과 같습니다.
var iOld=2 ;
var iOld1=64;
var iOld3=-2;
var iNew=iOld<<5;
var iNew2=iOld2>>>5;
var iNew3=iOld3>>1;
console.log(iNew) //outpus 64
console.log(iNew1 ); / /outpus 2
console.log(iNew2); //outpus 2
console.log(iNew3); //outpus 2147483647


부호 없는 오른쪽 이동 계산 방법 음의 iOld3은 다음과 같습니다.
먼저 -2를 부호 없는 등가 형식, 즉 -2의 2의 보수로 변환합니다.
-2 이진 표현의 음수가 아닌 버전: 0000 0000 0000 0000 0000 0000 0000 0010
이진 보수 코드: 1111 1111 1111 1111 1111 1111 1111 1101
이진 보수 코드에 1 추가: 1111 1111 1111 1111 1111 1111 1111 1110
마지막으로 오른쪽으로 한 비트 이동: 0111 111 1 1111 1111 1111 1111 1111 1111 즉: 2147483647
2.9.3 부울 연산자
1. 논리적 NOT: (!)로 표시되며 반환 값은 부울 값이어야 하며 동작은 다음과 같습니다.
피연산자가 객체이면 false를 반환
피연산자가 숫자 0이면 true를 반환
피연산자가 0이 아닌 숫자이면 false를 반환
피연산자가 null이면 true를 반환
피연산자가 NaN이면 true를 반환
피연산자가 정의되지 않은 경우 오류 발생
2. 논리 AND: (&&)로 표현되는 피연산자가 모두 Boolean 형식이면 true를 반환합니다. 피연산자가 모두 true인 경우에만 그렇지 않으면 false가 반환됩니다. AND 연산의 피연산자는 모든 유형이 될 수 있으며 반환 값은 반드시 부울 값일 필요는 없습니다.
피연산자 중 하나가 객체이고 다른 피연산자는 부울 값인 경우 객체를 반환합니다.
두 피연산자가 모두 다음인 경우 두 번째 객체를 반환
피연산자가 null이면 null을 반환
피연산자가 NaN이면 NaN을 반환
피연산자가 정의되지 않으면 오류 발생
ECMAScript의 논리 AND도 단순 연산, 즉 첫 번째 피연산자가 결과를 결정하면 두 번째 피연산자는 계산되지 않습니다. 예:



코드 복사 코드는 다음과 같습니다. var bFalse=false;
var bResult=bFalse&&bUnknow; //outpus false
var bTrue=true;
var bResult=bTrue&&bUnknow;
console.log(bResult); //outpus ReferenceError: bUnknow가 정의되지 않았습니다.


3. 논리 OR 연산자: (||)로 표현되며, 피연산자가 모두 Boolean이면 피연산자가 false인 경우에만 false를 반환하고, 그렇지 않으면 true를 반환합니다. OR 연산의 피연산자는 모든 유형이 될 수 있으며 반환 값은 부울 값일 필요는 없습니다.
피연산자 중 하나가 객체이고 다른 피연산자는 부울 값인 경우 객체를 반환합니다.
두 피연산자가 모두 다음인 경우 객체, 첫 번째 객체를 반환
피연산자가 null이면 null을 반환
피연산자가 NaN이면 NaN을 반환
피연산자가 정의되지 않으면 오류 발생
ECMAScript의 논리 OR도 단순 연산, 즉 첫 번째 피연산자가 결과를 결정하면 두 번째 피연산자는 계산되지 않습니다. 예:
코드 복사 코드는 다음과 같습니다.

var bTrue=true;
var bResult=bTrue||bUnknow;
console.log(bResult); //outpus true
var bFalse =false;
var bResult=bFalse||bUnknow;
console.log(bResult); //outpus ReferenceError: bUnknow가 정의되지 않았습니다.

2.9.4 곱셈 연산자
1. 곱셈 연산자: (*)로 표시됩니다. 일반적인 상황에서는 수학의 곱셈과 동일합니다. 특별한 경우에는 다음과 같은 특별한 값이 있습니다.
연산 결과가 너무 크거나 너무 작은 경우 생성된 결과는 Infinity 또는 -Infinity입니다.
피연산자가 NaN이면 결과는 NaN입니다.
Infinity에 0을 곱하면 결과는 NaN입니다.
Infinity에 0 이외의 숫자를 곱하면 결과는 Infinity 또는 -무한대, 두 번째로 결정 피연산자의 부호가 결정
무한대에 무한대를 곱하면 결과가 무한대
2. 나눗셈 연산자 : (/)로 표시되며 일반적인 상황에서는 수학의 곱셈과 동일 . 특별한 경우에는 몇 가지 특별한 값이 있습니다.
연산 결과가 너무 크거나 너무 작으면 결과는 Infinity 또는 -Infinity입니다.
피연산자가 NaN이면 결과는 NaN입니다.
무한대를 무한대로 나누면 결과는 NaN
무한대는 임의의 숫자로 나누면 결과는 무한대
0을 무한대가 아닌 숫자로 나누면 결과는 NaN
무한대는 임의의 숫자로 나눕니다. 0 이외의 경우 결과는 두 번째 피연산자의 부호에 따라 결정되는 무한대 또는 -무한대입니다.
3. 모듈로 연산자: 일반적인 상황에서는 수학의 곱셈과 동일합니다. , 몇 가지 특별한 값이 있습니다:
피제수가 무한대이거나 제수가 0인 경우 결과는 NaN입니다.
무한대가 무한대로 나누어지면 결과는 NaN입니다.
제수가 무한한 경우, 결과는 배당이다
배당이 0이면 결과는 0
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.