>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 기초과정의 관계식 정의와 사용법에 대한 자세한 설명

자바스크립트 기초과정의 관계식 정의와 사용법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-19 10:24:531321검색

관계 연산자는 두 값(동등, 보다 작음 또는 "속성임") 사이의 관계를 테스트하는 데 사용되며, 관계가 존재하는지 여부에 따라 true와 false를 반환합니다. 관계식은 항상 부울 값을 반환합니다. 일반적으로 if while 또는 for 문에서 프로그램의 실행 흐름을 제어하는 ​​데 사용됩니다.

i동등 및 부등 연산자

"==" 및 "===" 연산자는 두 값이 동일한지 여부를 비교하는 데 사용됩니다. 두 연산자는 모든 유형의 연산자를 허용합니다. 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. "==="는 두 피연산자가 엄격하게 동일한지 여부를 감지하는 데 사용되는 엄격한 동등 연산자(신원 연산자라고도 함)라고도 합니다. "==" 연산자는 두 피연산자가 같은지 여부를 확인하는 데 사용되는 동등 연산자라고 합니다. 여기서 동등의 정의는 느슨하며 유형 변환을 허용합니다.

Javascript는 "=", "==", "===" 연산자를 지원합니다. (할당, 동등, ID) 연산자의 차이점을 이해해야 합니다. 그리고 프로그래밍 시 주의해서 사용하세요. 혼란을 줄이기 위해 "="는 "get or Assign"으로, "=="는 "equality"로, "==="는 "엄격한 평등"으로 불러야 합니다.

"!=" 및 "!==" 연산자 규칙은 "=="이며 "===" 연산자의 부정입니다. "!"는 부울 NOT 연산자이므로 "!=", "! " =="는 엄밀한 동일성이 아니라 불평등이라고 합니다. JavaScript 객체의 비교는 값의 비교가 아니라 참조의 비교입니다. 대상은 그 자체와 동일하지만 사람도 대상도 동일하지 않습니다. 두 개체가 동일한 수의 속성, 동일한 속성 이름 및 값을 갖는 경우에도 여전히 동일하지 않습니다. 해당 위치의 배열 요소가 동일하더라도 두 배열도 동일하지 않습니다.

완전 항등 연산자 "==="는 먼저 피연산자의 값을 계산한 다음 유형 변환 없이 두 값을 비교합니다.

두 값이 동일한 유형이 아니면 동일하지 않습니다.

두 값이 모두 null이거나 정의되지 않은 경우 동일하지 않습니다.

두 값이 모두 부울 true 또는 false이면 동일합니다.
값 중 하나가 NaN이거나 두 값 모두 NaN이면 NaN이 아니며 자신을 포함한 다른 값도 동일하지 않습니다.
두 값은 숫자이고 같으면 같습니다. 값이 0이고 값이 -0인 경우에도 동일합니다.
두 값이 문자열이고 해당 비트에 포함된 16자리 숫자(3장 2절 참조)가 정확히 동일하면 동일합니다. 길이나 내용이 다르면 동일하지 않습니다. 두 문자열은 완전히 동일하게 작동하고 동일한 문자를 표시할 수 있지만 인코딩 없이 16비트 값을 갖습니다. JavaScript는 유니코드로의 표준 변환을 수행하지 않으므로 이러한 문자열은 "===" 및 "=="를 통해 전달됩니다. 연산자의 비교 결과도 동일하지 않습니다. 3부의 String.localeCompare()는 문자열을 비교하는 또 다른 방법을 제공합니다.
두 개의 참조 값은 동일한 객체, 배열 또는 함수를 가리키는 경우 동일합니다. 서로 다른 개체를 가리키는 경우 두 개체가 정확히 동일한 속성을 갖고 있더라도 동일하지 않습니다.
항등 연산자 "=="는 항등 연산자와 유사하지만 항등 연산자 비교가 엄격하지 않습니다. 두 숫자의 유형이 동일하지 않으면 항등 연산자는 유형 변환을 시도한 다음 비교합니다.

두 연산 유형이 동일한 경우 비교 규칙은 위의 항등 연산자와 동일합니다. 엄격하게 동일하면 비교 결과도 동일합니다. 엄격히 동일하지 않은 경우 비교 결과가 동일하지 않습니다.

두 연산 유형이 다른 경우 "==" 같음 연산자도 두 연산 유형을 동일한 것으로 간주합니다. 동등성을 감지하려면 다음 규칙과 유형 변환을 따릅니다.

한 유형이 null이고 다른 유형이 정의되지 않은 경우 두 값은 동일합니다.
한 값이 숫자이고 다른 값이 문자열이면 먼저 문자열을 숫자로 변환한 다음 변환을 사용합니다. 마지막 값을 비교하십시오.
값이 true이면 1로 변환하여 비교합니다. 값이 false이면 0으로 변환하여 비교합니다.
한 값이 객체이고 다른 값이 숫자나 문자열인 경우 3장 8절 3항에 있는 메서드의 변환 규칙을 사용하여 객체를 원시 값으로 변환한 후 비교하세요. 객체는 toString() 메서드 또는 valueOf() 메서드를 통해 기본 값으로 변환됩니다. JavaScript 언어의 핵심에 있는 내장 클래스들은 먼저 valueOf()를 사용하려고 시도한 다음 toString()을 사용하려고 시도합니다. date 클래스를 제외하면 date 클래스는 toString()을 통해서만 변환이 가능합니다. 핵심 JavaScript 언어의 일부가 아닌 개체는 구현에 정의된 메서드를 사용하여 기본 값으로 변환됩니다.
다른 유형 간의 비교는 동일하지 않습니다
동등 판단의 작은 예는 다음과 같습니다

"1" == true

이 표현식의 결과는 true입니다. 이는 완전히 다른 유형의 값의 비교 결과가 동일한. 부울 true는 비교가 수행되기 전에 먼저 숫자 1로 변환됩니다. 다음으로 문자열 "1"도 숫자 1로 변환됩니다. 두 숫자의 값이 동일하므로 결과는 true입니다.


ii 비교 연산자

(8cfa7c3f37d2d049154f9c86e9c53181)

보다 큼 또는 같음 (>=)

.... (의미에 대해서는 자세히 설명하지 않음)

비교 연산자의 피연산자는 모든 유형이 될 수 있습니다. 그러나 실제로는 숫자와 문자열만 비교 연산자를 수행할 수 있으므로 숫자나 문자열이 아닌 피연산자는 유형 변환을 거칩니다. 유형 변환 규칙은 다음과 같습니다.

피연산자가 객체인 경우 3장 8절 하위 섹션 3의 잠금 설명에 설명된 변환 규칙에 따라 기본 값으로 변환됩니다. valueOf()가 기본 값을 선택한 다음 이 기본 값을 직접 사용하세요. 그렇지 않으면 toString()의 변환 결과가 비교에 사용됩니다.
쌍을 기본 값으로 변환한 후 두 피연산자가 모두 문자열이면 두 문자열이 알파벳 순서로 비교됩니다. 여기서 언급된 "알파벳순"은 16비트 유니코드 문자의 인덱스 순서입니다. .
객체를 원시 값으로 변환한 후 하나 이상의 피연산자가 문자열이 아닌 경우 두 피연산자를 수치적으로 비교합니다. 0과 -0은 같습니다. 무한대는 다른 어떤 숫자(무한대 자체 제외)보다 크고 -infinty는 어떤 숫자(자체 제외)보다 작습니다. 피연산자(또는 변환된)가 NaN인 경우 비교 연산자는 항상 false를 반환합니다.
숫자의 경우, 문자열 연산자의 경우 As 에서는 더하기 연산자와 비교 연산자의 동작이 다릅니다. 전자는 피연산자 중 하나가 문자열이면 문자열 연결을 수행합니다. 비교 연산자는 두 피연산자가 모두 문자열인 경우에만 숫자를 선호합니다. 문자열 비교가 수행됩니다.

1 + 2 //=>3 더하기, 결과는 3
"1" + "2" //문자열 연결, 결과는 "12"
"1" + 2 //문자열 연결, 2가 변환됩니다. "2"로 변환하면 결과는 "12"
11 26a6607ece7cad542dc0ce44cf319608 =" 연산자는 같음을 결정할 때 같음 연산자와 엄격한 같음 비교 규칙을 사용하지 않습니다. 대조적으로, 작거나 같음 연산자는 단순히 "보다 크지 않음"이고 크거나 같음 연산자는 단순히 "보다 작지 않음"입니다. 한 가지 예외를 제외하고 (변환 후) 피연산자 중 하나가 NaN이면 4개의 비교 연산자 모두 fasle을 반환합니다.

iii.in 연산자

in 연산자는 왼쪽 피연산자가 A일 것으로 예상합니다. 문자열은 문자열로 변환될 수 있습니다. , 오른쪽이 객체이길 바랍니다. 오른쪽 객체에 왼쪽 피연산자 값이라는 속성 이름이 있는 경우 표현식은 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, 8]
            "0" in data //=>true 数组包含0
             1 in data //=>true 数字转换为字符串
             3 in data //=>fase 没有索引为3的元素

iiii.instanceof 연산자

instanceof 연산자는 왼쪽 연산자가 객체이고 오른쪽 피연산자가 객체일 것으로 예상합니다. 물건의 종류를 나타냅니다. 왼쪽 객체가 오른쪽 클래스의 인스턴스라면 표현식은 false를 반환합니다. 이에 대해서는 9장에서 설명하겠습니다. JavaScript 객체의 클래스는 생성자를 초기화하여 정의됩니다. 이 경우, instanceof의 오른쪽 피연산자는 함수여야 합니다. 예:

var d = new Date(); //构造一个新对象
  d instanceof Date; //计算结果为true, d是Date() 创建的
  d instanceof Object //计算结果为true ,所有的对象都是Object的实例
  d instanceof Number //计算结果为 false,d不是一个Number对象
  var a = [1,2,3] //数组直接量创建数组
  a instanceof Array //计算结果true a为数组
  a instanceof Object //true 所有的数组都是对象
  a instanceof RegExp //fasle 数组不是正则表达式

모든 개체는 개체의 인스턴스라는 점에 유의해야 합니다. 인스턴스of를 통해 객체가 클래스의 인스턴스인지 여부를 확인할 때, 이 판단을 '슈퍼클래스' 감지라고도 합니다. 인스턴스of의 왼쪽 작업 객체가 객체가 아닌 경우에는 false를 반환합니다. 오른쪽 연산이 함수가 아닌 경우 typewrong 예외가 발생합니다.

instanceof 연산자가 어떻게 작동하는지 이해하려면 먼저 "프로토타입 체인"을 이해해야 합니다. JavaScript의 상속 메커니즘인 프로토타입 체인에 대해서는 6장 2절에서 자세히 설명합니다.

o 인스턴스 오브 f를 계산하기 위해 JavaScript PenXian은 먼저 f.prototyoe를 계산한 다음 프로토타입 체인에서 o를 쿼리합니다. 발견되면 o는 f의 인스턴스(또는 f의 상위 클래스)이고 true입니다. 반환됩니다. 그렇지 않으면 거짓

위 내용은 자바스크립트 기초과정의 관계식 정의와 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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