Baseline Widely available
BigInt
ã¯ã大ããã㦠number
ããªããã£ãã§è¡¨ããã¨ãã§ããªãæ°ã表ç¾ãã¾ãã
BigInt å¤ã¯ãåã« BigInt ã¨å¼ã°ãããã¨ãããã¾ãããbigint
ããªããã£ãã§ããæ´æ°ãªãã©ã«ã®æ«å°¾ã« n
ã追å ããããBigInt()
ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºããæ´æ°å¤ã¾ãã¯æååå¤ãä¸ãããã¨ã§çæãããã¨ãã§ãã¾ãï¼ãã ã new
æ¼ç®åãªãã§ï¼ã
const previouslyMaxSafeInteger = 9007199254740991n;
const alsoHuge = BigInt(9007199254740991);
// 9007199254740991n
const hugeString = BigInt("9007199254740991");
// 9007199254740991n
const hugeHex = BigInt("0x1fffffffffffff");
// 9007199254740991n
const hugeOctal = BigInt("0o377777777777777777");
// 9007199254740991n
const hugeBin = BigInt(
"0b11111111111111111111111111111111111111111111111111111",
);
// 9007199254740991n
BigInt ã¯ããã¤ãã®ç¹ã§ Number ã¨ä¼¼ã¦ãã¾ãããéè¦ãªããã¤ãã®ç¹ãç°ãªãã¾ããçµã¿è¾¼ã¿ã® Math
ãªãã¸ã§ã¯ãå
ã®ã¡ã½ããã§ã¯å©ç¨ã§ãããæ¼ç®ã§ Number ã®å¤ã¨æ··ãããã¨ãã§ãã¾ãããåãåã«çµ±ä¸ããå¿
è¦ãããã¾ãããã ããBigInt ã Number ã¸å¤æããéã«ã¯ç²¾åº¦ãè½ã¡ããã¨ãããã®ã§ãç¸äºã«å¤æããå ´åã«ã¯æ³¨æãå¿
è¦ã§ãã
typeof
ã® BigInt å¤ (bigint
ããªããã£ã) ã«å¯¾ããè©ä¾¡å¤ã¯ã"bigint"
ã¨ãªãã¾ãã
typeof 1n === "bigint"; // true
typeof BigInt("1") === "bigint"; // true
BigInt å¤ã¯ Object
ã§ã©ãããããã¨ãã§ãã¾ãã
typeof Object(1n) === "object"; // true
æ¼ç®å
以ä¸ã®æ¼ç®å㯠BigInt å¤ã¾ãã¯ãªãã¸ã§ã¯ãã§ã©ãããã BigInt å¤ã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
+ * - % **
ãããæä½æ¼ç®åãåæ§ã«å©ç¨ã§ãã¾ããã>>>
ï¼è«ççå³ã·ããï¼ã¯ BigInt ã常ã«ç¬¦å·ä»ããªã®ã§é¤å¤ããã¾ãã
åæ§ã«ãasm.js ãå£ããªãããã«ããããåé
æ¼ç®åï¼+
ï¼ã«ã対å¿ãã¦ãã¾ããã
const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER);
// 9007199254740991n
const maxPlusOne = previousMaxSafe + 1n;
// 9007199254740992n
const theFuture = previousMaxSafe + 2n;
// 9007199254740993n, this works now!
const multi = previousMaxSafe * 2n;
// 18014398509481982n
const subtr = multi - 10n;
// 18014398509481972n
const mod = multi % 10n;
// 2n
const bigN = 2n ** 54n;
// 18014398509481984n
bigN * -1n;
// -18014398509481984n
/
æ¼ç®åããã¹ã¦ã®æ°å¤ã«å¯¾ãã¦ãæå¾
ãããéãã«åä½ãã¾ãããã ããå°æ°ã®çµæããã¤æ¼ç®ã§ã¯ BigInt å¤ã¨æ¼ç®ããéã«å°æ°ãåãæ¨ã¦ããã¾ããå°æ°ç¹ä»¥ä¸ã®æ¡æ°ã¯è¿ããã¾ããã
const expected = 4n / 2n;
// 2n
const truncated = 5n / 2n;
// 2n, not 2.5n
æ¯è¼æ¼ç®
BigInt å¤ã¯ Number å¤ã¨å³å¯ç価ã§ã¯ããã¾ããããç価ã«ã¯ãªãã¾ãã
0n === 0; // false
0n == 0; // true
Number å¤ã¨ BigInt å¤ã¯é常éãæ¯è¼ã§ãã¾ãã
1n < 2; // true
2n > 1; // true
2 > 2; // false
2n > 2; // false
2n >= 2; // true
BigInt å¤ã¨ Number å¤ã¯é åå ã«æ··å¨ããã¦ä¸¦ã¹æ¿ãããã¨ãã§ãã¾ãã
const mixed = [4n, 6, -12n, 10, 4, 0, 0n];
// [4n, 6, -12n, 10, 4, 0, 0n]
mixed.sort(); // æ¢å®ã®ä¸¦ã¹æ¿ãã®åä½
// [ -12n, 0, 0n, 10, 4n, 4, 6 ]
mixed.sort((a, b) => a - b);
// åãæ··å¨ããæ¸ç®ã¯ã§ããªãã®ã§åä½ããªã
// TypeError: can't convert BigInt value to Number value
// é©åãªæ°å¤æ¯è¼é¢æ°ã使ç¨ããä¸¦ã¹æ¿ã
mixed.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
// [ -12n, 0, 0n, 4n, 4, 6, 10 ]
ãªããObject
ã«ã©ããããã BigInt ã¯ä»ã®ãªãã¸ã§ã¯ãã¨åæ§ã®æ¯ãèãããã¾ããåãã¤ã³ã¹ã¿ã³ã¹åå£«ãæ¯è¼ãããå ´åã«ã®ã¿ç価ã¨ãªãã¾ãã
0n === Object(0n); // false
Object(0n) === Object(0n); // false
const o = Object(0n);
o === o; // true
Number å¤ã¨ BigInt å¤ã®å夿ã¯ç²¾åº¦ãè½ã¡ãå¯è½æ§ããããããæ¬¡ã®ãã¨ãæ¨å¥¨ãã¾ãã
BigInt å¤ã¯æ¬¡ã®ãããªå ´å㯠Number å¤ã®ããã«åä½ãã¾ãã
Boolean
ã¸å¤æãããå ´åï¼Boolean
颿°ã使ç¨ãã¦ï¼||
ã&&
ã!
ã¨ä¸ç·ã«ä½¿ç¨ãããå ´åif
æã®ãããªæ¡ä»¶å¼ã®ä¸ã§ä½¿ç¨ãããå ´åã¤ã¾ãã0n
ã®ã¿ãå½å¤ã§ãä»ã®ãã¹ã¦ã¯çå¤ã¨ãªãã¾ãã
if (0n) {
console.log("Hello from the if!");
} else {
console.log("Hello from the else!");
}
// "Hello from the else!"
0n || 12n; // 12n
0n && 12n; // 0n
Boolean(0n); // false
Boolean(12n); // true
!12n; // false
!0n; // true
æå·å¦ç
BigInt ã§å¯¾å¿ãã¦ããæ¼ç®ã¯ãå®è¡æéãä¸å®ã§ã¯ãªãã®ã§ãã¿ã¤ãã³ã°æ»æãåããå¯è½æ§ãããã¾ãããããã£ã¦ãç·©åè¦å ããªããã° JavaScript ã® BigInt ãæå·å¦çã§ä½¿ãã®ã¯å±éºãªå¯è½æ§ãããã¾ããé常ã«ä¸è¬çãªä¾ã¨ãã¦ãæ»æè
㯠101n ** 65537n
㨠17n ** 9999n
ã®æéå·®ãè¨æ¸¬ããçµéæéã«ãã¨ã¥ãã¦ç§å¯éµã®ãããªç§å¿æ
å ±ã®å¤§ãããæ¨å®ãããã¨ãã§ãã¾ããããããã§ã BigInt ã使ç¨ããªããã°ãªããªãå ´åã¯ããã®åé¡ã«é¢ããä¸è¬çãªã¢ããã¤ã¹ãæ²è¼ããã¦ããã¿ã¤ãã³ã°æ»æã®FAQãã覧ãã ããã
JSON.stringify()
ã BigInt å¤ã«å¯¾ãã¦ä½¿ç¨ãã㨠TypeError
ãçºçãã¾ãã BigInt å¤ã¯æ¢å®ã§ JSON ã®ã·ãªã¢ã©ã¤ãºã«å¯¾å¿ãã¦ããªãããã§ãããã ããJSON.stringify()
ã¯ç¹å¥ã« BigInt å¤ã«å¯¾ããè£å£ãæ®ãã¦ããã BigInt ã® toJSON()
ã¡ã½ãããå¼ã³åºããã¨ãã¾ãï¼ä»ã®ããªããã£ãå¤ã«å¯¾ãã¦ã¯ãããã¾ããï¼ããããã£ã¦ãèªèº«ã§ toJSON()
ã¡ã½ãããå®è£
ãããã¨ãã§ãã¾ãï¼çµã¿è¾¼ã¿ã«ãªãã¸ã§ã¯ãã«ããããå½ã¦ããã¨ãæç¢ºã«ææ¢ããã¦ããªãæ°å°ãªãä¾ã®ä¸ã¤ï¼ã
BigInt.prototype.toJSON = function () {
return this.toString();
};
ã¨ã©ã¼ãçºçããããããã«ãJSON.stringify()
ã¯æ¬¡ã®ãããªæååãçæãã¾ãã
console.log(JSON.stringify({ a: 1n }));
// {"a":"1"}
ãã BigInt.prototype
ã«ããããå½ã¦ãããªãå ´åã¯ã BigInt å¤ã®ã·ãªã¢ã©ã¤ãºã« JSON.stringify()
ã® replacer
弿°ã使ããã¨ãã§ãã¾ãã
const replacer = (key, value) =>
typeof value === "bigint" ? value.toString() : value;
const data = {
number: 1,
big: 18014398509481982n,
};
const stringified = JSON.stringify(data, replacer);
console.log(stringified);
// {"number":1,"big":"18014398509481982"}
é·æ´æ°ã«ãªããã¨ãããã£ã¦ããå¤ãå«ã JSON ãã¼ã¿ãããå ´åã¯ãJSON.parse
ã® reviver
弿°ã使ã£ã¦å¯¾å¦ãããã¨ãã§ãã¾ãã
const reviver = (key, value) => (key === "big" ? BigInt(value) : value);
const payload = '{"number":1,"big":"18014398509481982"}';
const parsed = JSON.parse(payload, reviver);
console.log(parsed);
// { number: 1, big: 18014398509481982n }
ã¡ã¢: JSON.stringify()
ã® replacer ãæ±ç¨çã«ãããã¹ã¦ã®ãªãã¸ã§ã¯ãã«å¯¾ã㦠BigInt å¤ãé©åã«ã·ãªã¢ã©ã¤ãºããããã¨ãå¯è½ã§ããã®ã«å¯¾ããJSON.parse()
ã® reviver ã¯æå¾
ãããã¤ãã¼ãã®å½¢ã«ç¹åãã¦ããªããã°ãªãã¾ãããã¨ããã®ããã·ãªã¢ã©ã¤ãºã¯éå¯éçã ããã§ããã¤ã¾ã BigInt ã表ç¾ããæååã¨éå¸¸ã®æååãåºå¥ãããã¨ã¯ã§ãã¾ããã
BigInt ãæå¾ ããå¤ãã®çµã¿è¾¼ã¿æ¼ç®ã¯ãã¾ã弿°ã BigInt ã«å¤æãã¾ããæ¼ç®ã¯ä»¥ä¸ã®ããã«è¦ç´ã§ãã¾ãã
undefined
㨠null
㯠TypeError
ãçºçããããtrue
㯠1n
ã«ãªãã false
㯠0n
ã«ãªããSyntaxError
ãçºçãããTypeError
ãçºçããã精度ã®ä½ä¸ãå¼ãèµ·ããæå³ããªãæé»ã®å¤æãé²ããTypeError
ãçºçãããã[Symbol.toPrimitive]()
ï¼"number"
ããã³ãã«æå®ï¼ãvalueOf()
ãtoString()
ã®é ã«ã¡ã½ãããå¼ã³åºãã¦ããªããã£ã夿ãããããã®çµæã®ããªããã£ã㯠BigInt ã«å¤æããããJavaScript ã§ã»ã¼åã广ãå¾ãæè¯ã®æ¹æ³ã¯ãBigInt()
颿°ã使ããã¨ã§ããBigInt(x)
ã¯åãã¢ã«ã´ãªãºã ã使ã£ã¦ x
ã夿ãã¾ãããæ°å¤ã TypeError
ãçºçããããæ´æ°ã§ããã° BigInt ã«å¤æãããç¹ãç°ãªãã¾ãã
BigInt ãæå¾
ããçµã¿è¾¼ã¿æ¼ç®ã¯ã夿å¾ã« BigInt ãåºå®å¹
ã«åãè©°ãããã¨ãå¤ããã¨ã«æ³¨æãã¦ãã ããããã㯠BigInt.asIntN()
㨠BigInt.asUintN()
ãããã³ BigInt64Array
㨠BigUint64Array
ã®ã¡ã½ãããå«ã¿ã¾ãã
BigInt()
æ°ãã BigInt å¤ãçæãã¾ãã
BigInt.asIntN()
BigInt å¤ã符å·ä»ãæ´æ°å¤ã«ä¸¸ãããã®å¤ãè¿ãã¾ãã
BigInt.asUintN()
BigInt å¤ã符å·ãªãæ´æ°å¤ã«ä¸¸ãããã®å¤ãè¿ãã¾ãã
以ä¸ã®ããããã£ã¯ BigInt.prototype
ã§å®ç¾©ããã¦ããããã¹ã¦ã® BigInt
ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
BigInt.prototype.constructor
ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ãBigInt
ã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯ BigInt
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
BigInt.prototype[Symbol.toStringTag]
@@toStringTag
ããããã£ã®åæå¤ã¯æåå "BigInt"
ã§ãããã®ããããã£ã¯ Object.prototype.toString()
ã§ä½¿ããã¾ãããã ãã BigInt
ãç¬èªã® toString()
ã¡ã½ããããã¤ã®ã§ãthisArg
ã¨ã㦠BigInt ãæå®ã㦠Object.prototype.toString.call()
ãå¼ã³åºããªãããããã®ããããã£ã¯ä½¿ããã¾ããã
BigInt.prototype.toLocaleString()
ãã® BigInt å¤ã®è¨èªã«åããã表ç¾ã®æååãè¿ãã¾ããObject.prototype.toLocaleString()
ã¡ã½ããã䏿¸ããã¾ãã
BigInt.prototype.toString()
ãã® BigInt å¤ãæå®ãããåºæ°ã§è¡¨ç¾ããæååãè¿ãã¾ããObject.prototype.toString()
ã¡ã½ããã䏿¸ããã¾ãã
BigInt.prototype.valueOf()
ãã® BigInt å¤ãè¿ãã¾ããObject.prototype.valueOf()
ã¡ã½ããã䏿¸ããã¾ãã
// 渡ããã BigInt ãç´ æ°ã§ãã£ãå ´å㯠true ãè¿ãã¾ã
function isPrime(p) {
for (let i = 2n; i * i <= p; i++) {
if (p % i === 0n) return false;
}
return true;
}
// 弿°ã¨ã㦠BigInt å¤ãåãã nth çªç®ã®ç´ æ°ã BigInt å¤ã¨ãã¦è¿ãã¾ãã
function nthPrime(nth) {
let maybePrime = 2n;
let prime = 0n;
while (nth >= 0n) {
if (isPrime(maybePrime)) {
nth--;
prime = maybePrime;
}
maybePrime++;
}
return prime;
}
nthPrime(20n);
// 73n
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4