å°ãªãæ¼ç®å (<)
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
å°ãªãæ¼ç®å (<) ã¯ãå·¦ãªãã©ã³ããå³ãªãã©ã³ãããå°ããå ´å㯠true ãè¿ãããã以å¤ã®å ´å㯠false ãè¿ãã¾ãã
試ãã¦ã¿ã¾ããã
console.log(5 < 3);
// äºæ³ãããçµæ: false
console.log(3 < 3);
// äºæ³ãããçµæ: false
// é·æ´æ°ã¨æ°å¤ã¨ã®æ¯è¼
console.log(3n < 5);
// äºæ³ãããçµæ: true
console.log("aa" < "ab");
// äºæ³ãããçµæ: true
æ§æ
x < y
解説
ãªãã©ã³ãã¯è¤æ°ã®å夿ãçµã¦æ¯è¼ããã¾ããæ¦è¦ã¯ä»¥ä¸ã®éãã§ãã
- æåã«ããªãã¸ã§ã¯ãã¯ããªããã£ãã«å¤æããã¾ããããã¯ãªãã¸ã§ã¯ãã«å¯¾ãã¦
[Symbol.toPrimitive]()ï¼"number"ããã³ãã¨ãã¦ï¼ãvalueOf()ãtoString()ã®åã¡ã½ããããã®é ã«å¼ã³åºããã¨ã§è¡ããã¾ããå·¦ãªãã©ã³ãã¯å¸¸ã«å³è¾ºãããå ã«å¤æããã¾ãã ãªãã[Symbol.toPrimitive]()ã¯"number"ã®ãã³ãä»ãã§å¼ã³åºããã¾ãï¼ã¤ã¾ããªãã¸ã§ã¯ãã®æ°å¤ã¸ã®å¤æã®åªå 度ãå°ãé«ãã¨ãããã¨ã§ãï¼ãããããæååã¯ã¾ã ç¹å¥ã«æ±ããããããè¿å¤ã¯æ°å¤ã«å¤æããã¾ããã - 両æ¹ã®å¤ãæååã§ããå ´åãæååã¨ãã¦æ¯è¼ããã¾ããæ¯è¼ã¯ãããããã«å«ã¾ãã¦ãã UTF-16 ã³ã¼ãåä½ã®å¤ã«åºã¥ãã¦è¡ããã¾ãï¼Unicode ã³ã¼ããã¤ã³ãã§ã¯ãªãï¼ã
- ãã以å¤ã®å ´åã JavaScript ã¯éæ°å¤åãæ°å¤ã«å¤æãããã¨ãã¾ãã
- è«çå¤
trueããã³falseã¯ããããã 1 ããã³ 0 ã«å¤æããã¾ãã null㯠0 ã«å¤æããã¾ããundefinedã¯NaNã«å¤æããã¾ãã- æååã¯ãå«ã¾ãã¦ããå¤ã«åºã¥ãã¦å¤æãããæ°å¤ãå«ã¾ãã¦ããªãå ´åã¯
NaNã¨ãã¦å¤æããã¾ãã
- è«çå¤
- ããããã®å¤ã
NaNã§ããå ´åãæ¼ç®åã¯falseãè¿ãã¾ãã - ãã以å¤ã®å ´åã¯ãå¤ã¯æ°å¤ã¨ãã¦æ¯è¼ããã¾ããé·æ´æ°ã¨æ°å¤ã¯äºãã«æ¯è¼ãããã¨ãã§ãã¾ãã
ãã以å¤ã®æ¼ç®åã§ãã >ã>=ã<= ã¯ã < ã¨åãã¢ã«ã´ãªãºã ã使ç¨ãã¾ãã 4 ã¤ã®æ¼ç®åãã¹ã¦ã false ãè¿ãå ´åã 2 ã¤ããã¾ãã
- ãªãã©ã³ãã®ä¸æ¹ãé·æ´æ°ã«å¤æããããã䏿¹ãé·æ´æ°å¤ã«å¤æã§ããªãæååã«å¤æãããå ´åï¼
BigInt()ã«æ¸¡ãã¨æ§æã¨ã©ã¼ãçºçããå ´åï¼ã - ãªãã©ã³ãã®ä¸æ¹ã
NaNã«å¤æãããå ´åãï¼ä¾ãã°ãæ°å¤ã«å¤æã§ããªãæååãundefinedãªã©ãï¼
ãã以å¤ã®ãã¹ã¦ã®å ´åã«ããã¦ã 4 ã¤ã®æ¼ç®åã®é¢ä¿ã¯æ¬¡ã®ããã«ãªãã¾ãã
x < y === !(x >= y);
x <= y === !(x > y);
x > y === y < x;
x >= y === y <= x;
ã¡ã¢:
< 㨠> ã®éã®è¦³å¯å¯è½ãªéãã®ä¸ã¤ã¯ãå夿ã®é åºã§ããç¹ã«ãããªããã£ãåã¸ã®å夿ã«å¯ä½ç¨ãä¼´ãå ´åã«é¡èã§ããæ¯è¼æ¼ç®åã¯ãã¹ã¦ãå·¦ãªãã©ã³ããå³ãªãã©ã³ããããå
ã«å夿ãã¾ãã
ä¾
>æååã¨æååã®æ¯è¼
"a" < "b"; // true
"a" < "a"; // false
"a" < "3"; // false
"\uD855\uDE51" < "\uFF3A"; // true
æååã¨æ°å¤ã®æ¯è¼
"5" < 3; // false
"3" < 3; // false
"3" < 5; // true
"hello" < 5; // false
5 < "hello"; // false
"5" < 3n; // false
"3" < 5n; // true
æ°å¤ã¨æ°å¤ã®æ¯è¼
5 < 3; // false
3 < 3; // false
3 < 5; // true
æ°å¤ã¨é·æ´æ°ã®æ¯è¼
5n < 3; // false
3 < 5n; // true
è«çå¤ãnullãundefinedãNaN ã®æ¯è¼
true < false; // false
false < true; // true
0 < true; // true
true < 1; // false
null < 0; // false
null < 1; // true
undefined < 3; // false
3 < undefined; // false
3 < NaN; // false
NaN < 3; // false
å¯ä½ç¨ã®ããæ¯è¼
æ¯è¼æ¼ç®ã¯å¸¸ã«ãªãã©ã³ããããªããã£ãåã«å¼·å¶å¤æãã¾ãã ããªãã¡ãåä¸ãªãã¸ã§ã¯ããåä¸ã®æ¯è¼å¼å ã§ç°ãªãå¤ãæã¤å¯è½æ§ãããã¾ãã ä¾ãã°ã 2 ã¤ã®å¤ãäºãã«ããã大ãããã¨åæã«ãããå°ãããã¨ããç¶æ ã«ãªããã¨ãããã¾ãã
class Mystery {
static #coercionCount = -1;
valueOf() {
Mystery.#coercionCount++;
// å·¦ãªãã©ã³ããæåã®å夿ãããããããã㯠0 ãè¿ã
// ãã®å¾ãå³ãªãã©ã³ãã«å¯¾ã㦠1 ãè¿ã
return Mystery.#coercionCount % 2;
}
}
const l = new Mystery();
const r = new Mystery();
console.log(l < r && r < l);
// true
è¦å: ããã¯æ··ä¹±ã®æºã¨ãªãå¯è½æ§ãããã¾ãããªãã¸ã§ã¯ããç¬èªã®ããªããã£ã夿ãã¸ãã¯ãæä¾ããå ´åããããã¹ãçæ§ãæã¤ããã«ãã¦ãã ãããå夿ãè¤æ°åè¡ã£ã¦ããåãå¤ãè¿ãå¿ è¦ãããã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-relational-operators > |