layout | status | published | title | author | author_login | author_email | author_url | excerpt | wordpress_id | wordpress_url | date | date_gmt | categories | comments | permalink | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
post |
publish |
true |
JavaScript ã€ãã£ãªã é |
Takuo Kihira |
tax |
tax@nmi.jp |
http:// |
JavaScriptã§ã¯ãåèŠã®äººã«ã¯ãã£ã±ãããããªãããã©ããããçšåºŠæ
£ãã人ã¯åœããåã«äœ¿ãã€ãã£ãªã ãçµæ§ãããããããŸããç¥ã£ãŠããŸãã°äœãŠããšã¯ãªãã®ã§ãç§ã®ç¥ã£ãŠããéãã®ã€ãã£ãªã ãšãã®æå³ã解説ããŸãã<br /><br />ïŒ7/3远èš: twitterçã§æããŠããã ããå
容ã远å ããŸããïŒ<br /> |
488 |
2013-07-03 11:25:45 +0900 |
2013-07-03 02:25:45 +0900 |
|
archives/488 |
JavaScriptã§ã¯ãåèŠã®äººã«ã¯ãã£ã±ãããããªãããã©ããããçšåºŠæ £ãã人ã¯åœããåã«äœ¿ãã€ãã£ãªã ãçµæ§ãããããããŸããç¥ã£ãŠããŸãã°äœãŠããšã¯ãªãã®ã§ãç§ã®ç¥ã£ãŠããéãã®ã€ãã£ãªã ãšãã®æå³ã解説ããŸãã
ïŒ7/3远èš: twitterçã§æããŠããã ããå
容ã远å ããŸããïŒ
```javascript var v = "123"; console.log(+v + 100) // 223 console.log(v + 100) // 123100 ``` +v ïŒæ°å€åïŒ
vãæ°å€åããæ¹æ³ã§ã¯æãã¡ãžã£ãŒã§ããparseFloat(v) ã«æ¯ã¹ãŠé«éãªã®ã«å ããŠãparseFloatãšã¯çްããæåãç°ãªããŸãïŒäŸãã°ç©ºæååã®å ŽåãparseFloatãªãã° NaN ã«ãªããŸããã +v ã®å Žåã¯ãŒãã«ãªããŸãïŒãå¿ ãæ°å€ã«ãªãããšãä¿èšŒãããŠãããæååãªã©ã§æ°å€ååºæ¥ãªãå Žåã¯NaNãè¿ããŸãã
```javascript var v = "123"; console.log((v - 0) + 100) // 223 console.log(v + 100) // 123100 ``` v - 0 ïŒæ°å€åïŒ
ãã¡ããæ°å€åã§ãã+v ã«æ¯ã¹ãŠããŸã䜿ãããããšã¯ãããŸããããåèŠã§ãããçšåºŠæå³ãçè§£ããããã¡ãªããã¯ãããããããŸãããå人çãªå°è±¡ã§ããã+v ã倧å€ã¡ãžã£ãŒãªã®ã§ v - 0 ã䜿ããã㯠+v ã䜿ã£ãã»ããè¯ãããšæããŸãã
```javascript var n = 123; console.log(n + 123); //246 console.log(n + "" + 123); //123123 ``` v + "" ïŒæåååïŒ
æåååããããã®ã€ãã£ãªã ã§ããé »ç¹ã«äœ¿ãããŸããããããšèŠãã°æå³ããããããšæããŸãã
ãã æåååã¯ãããŸããããããªãæåååã®ã³ãŒããæžãæ¹ãå€ãå°è±¡ããããŸããäŸãã°ã
ãšããã³ãŒãããããŸãããããã¯å®è¡æã®æé©åãé»å®³ããèŠçŽ ã®å€ãã³ãŒãã§ãããå¯èªæ§ãåçšåºŠã§ããv + ""ã䜿ãããšãããããããŸãã
ä»ã«ãçšã«ã¿ãã®ã `String()` ã§ããvar n = 123;
n = String(n);
ããã¯é床çã«ã¯åé¡ããªãã§ãããããééã㊠new String(n)
ãšæžã人ãããŠããããnew String
ã§ãäžèŠæ£ããåããŠããŸãåé¡ãããã®ã§ãç©æ¥µçã«é¿ããã¹ãæžãæ¹ã ãšèããŠãããŸããnew String
ã§äœãããStringãªããžã§ã¯ãã¯ãããããObjectã§ããStringã§ã¯ãããŸããããã®ObjectãæååãšããŠè©äŸ¡ããããšããéã«ã¯ãæ¯åå
éšçã«toString
颿°ïŒãããã¯valueOf
颿°ïŒãåŒã°ããŠObjectããStringã«å€æãããããšã«ãªããç¡é§ã®æ¥µã¿ãšãªããŸãã
String.prototype.valueOf = function() { return "aaa"; };
var n = 123;
var strobj = new String(n);
var str = String(n);
console.log("[" + strobj + "]"); // [aaa]
console.log("[" + str + "]"); // [123]
ãšããããã§ãæåååããå Žå㯠v + ""
ã䜿ãã®ã倧æµã®å ŽåæãŸããã®ã§ã¯ãªãããšæããŸãã
```javascript var o = { value: 0 }; if(o.value != null) { console.log("value property exists"); } ``` ããã¯ãããã£ãšæžãããŠããã®ã§èŠéããã¡ã§ãããnullãšundefinedããã§ãã¯ãã倧å€éèŠãªã€ãã£ãªã ã§ããããçšåºŠJavaScriptã«æ £ããŠãããšãããããã£ã®ååšç¢ºèªãbooleanã®èªå倿ã«é Œã£ãŠæžããã¡ã«ãªããŸããäŸãã° if(v != null) ïŒnullãšundefinedã®ãã§ãã¯ïŒ
if(o.value) { ... }
ãšããæãã§ãããvalueããªããžã§ã¯ããªã©ã§ããã°ããã§åé¡ãªãã®ã§ãããããã®valueãæ°å€ãæååãåãå Žåã«ã¯ãããŸããŸãã®valueã0ã空æååã§ãã£ãå Žåã«ãããæ€ç¥ã§ãããçºèŠãã«ãããã°ãšããŠæ®ã£ãŠããŸããŸãã
`if(v != null)` ã§æ¯èŒããå Žåãvãnullã®å Žåãšundefinedã®å Žåã®ã¿åŒŸããvã0ã®å Žåã空æååã®å Žåã¯åŒã£ããããã«éããŸãããã®ã€ãã£ãªã ã§æžãããŠããå Žåã¯ããããŠããã®ããšãæèããŠæžãããŠããããšãã»ãšãã©ã§ãã®ã§ã決ã㊠`if(v != null)` ã `if(v)` ãšæžãæããªãããã«æ°ãã€ããŸããããvãããŸããŸãŒãã®å Žåãªã©ã«ããçºèŠããªãã倧å€é¢åãªãã°ã«ãªã£ãŠããŸããŸãã```javascript ;(function() { var x = "hello world"; console.log(x); })(); ``` (function(){ ... })(); // ã¹ã³ãŒãå
ãœãŒã¹ã³ãŒãã®æåãšæåŸã«ãªããžãã€ã®ããã«æžããããããããªã人ã«ãšã£ãŠã¯è¬ã®functionæã§ããJavaScriptã¯é¢æ°ã®äžã«æžããªã倿°å®£èšã¯å šãŠã°ããŒãã«å€æ°ãšããŠæ±ãããŠããŸãã®ã§ãã°ããŒãã«ã¹ã³ãŒããæ±ããªãããã«é¢æ°åŒã§ã³ãŒãå šäœãå²ã£ãŠããŸãã
颿°åŒã宣èšãããã®é¢æ°ãå®è¡ããåŠçãå
šéšãŸãšããŠæžããŠããŸã£ãŠããŸãã®ã§ãããããããæžããš
ãšãããããªã³ãŒããæžããŠããã®ãšåãã§ãïŒãã®å Žåãfãã°ããŒãã«å€æ°ã«ãªã£ãŠããŸã£ãŠããŸããïŒããªãfunctionã®åã«æ¬åŒ§ã(ããããããšãããšãããããªããšé¢æ°åŒã§ã¯ãªãæ®éã®é¢æ°å®£èšã ãšæ§æè§£æãããŠããŸãããã®çµææ§æãšã©ãŒã«æã£ãŠããŸãããã§ãã
äžçªæåã®ã»ãã³ãã³ã¯ç¡ããŠã倧äžå€«ã§ããããããèªåã®ç¥ããªããšããã§ã©ã€ãã©ãªçã§ãã¡ã€ã«çµåãããå ŽåãçŽåã®ãã¡ã€ã«ã®æåŸã«ã»ãã³ãã³ãæããŠãããšæ§æãšã©ãŒã«ãªã£ãŠããŸãã®ã§ã念ã®çºã«ã»ãã³ãã³ãã€ããæ¹ãè¯ããããããŸããã
ãªãããã®é¢æ°ã®ã¹ã³ãŒãåã«ã¯ããã€ãæµæŽŸããããŸããèå³ã®ããããã¯ãã¡ããã©ããâ http://blog.niw.at/post/25330545602
```javascript var o = { f: function() { console.log("hello world"); } }; o && o.f && o.f(); ``` && ïŒifæã®çç¥ïŒ
&& æŒç®åã¯ãC++Javaãªã©ã§ã¯ booleanåã«ãã䜿ããªãã§ãããJavaScriptã§ã¯ã©ã®ãããªåã«ã§ã䜿ããŸãããããå©çšããŠãifæãæžããã«ãªããžã§ã¯ãã®ååšå€å®ããããšãã«å€§å€é »ç¹ã«äœ¿ãããã€ãã£ãªã ã§ãã
äŸãã°äžèšã®äŸã if æã䜿ã£ãŠæžããšã以äžã®ããã«ãªããŸãã
ãã®ããã«åé·ãªifæãæžããªãããã«ã&&ã䜿ã£ãŠççž®ããŠããããã§ããç¹ã«é¢æ°ã®å é ãªã©ã§ããªããžã§ã¯ããç¹å®ã®ããããã£ãæã£ãŠããã®ã確èªããæã£ãŠããå Žåã¯ãããå®è¡ããããšãããããªåŠçããããšãã«é »ç¹ã«äœ¿ãããŸãã
äžã«ä»£å
¥ãæžãæã¯ã代å
¥ãæ¬åŒ§ã§ããããªããšããŒã¹ãšã©ãŒã«ãªãã®ã§æ°ãã€ããŠãã ããã
ãªãããã®ã€ãã£ãªã ã¯æ°å€ãæååããªããžã§ã¯ããå éšã§æé»ã«booleanã«å€æãããã®ãå©çšããŠãããŸããæ°å€ã®0ãNaNã空æååãnullãundefinedãfalseã«å€æãããŸããããã®ã€ãã£ãªã ãèªåã䜿ãå Žåã¯äºæãã¬èªå倿ãé¿ããããã«ã null ã undefined ã®ãã§ãã¯ã«çããŠããã®ãè¯ããšæããŸãã
ãã¡ãã ifæ ã®çç¥ã«ãªããŸãã || ïŒifæã®çç¥ïŒ
var v = (o && o.f) || function() { console.log("hello world"); };
v();
&&ãšåãããã«ãifæãçç¥ããŠæžããšãã«äœ¿ãããŸãã倿°ã®ä»£å ¥æã«undefinedãé¿ããã®ã«äœ¿ãããã®ãå€ãã§ãã
ãã¡ããifæã§æžããšã
ãšãªããŸãã&&ãšåãããã«äœ¿ããã®ã§ãäž¡è ãåæã«äœ¿ãããç¶æ³ã¯å€ãã§ãã
ãã¡ããæé»ã®å倿ãå©çšããŠããã®ã§ãã©ã®å€ãtrueã«ãªããã©ã®å€ãfalseã«ãªãã®ãã¯ãã¡ããšææ¡ããããšè¯ããšæããŸãã
ãªãã&&ã||ã䜿ããšifæã䜿ãããéããªãããšãããšãã¹ããŒããã©ã³ã«ãããŠã¯æã¯ãã®åŸåããã£ãã®ã§ãããä»ã§ã¯ã»ãšãã©å·®ããªããªã£ãŠããŸããå¯èªæ§ãç ç²ã«ããŠãŸã§äœ¿ãã€ãã£ãªã ã§ã¯ãªããªãã€ã€ããã€ã¡ãŒãžã§ãã
```javascript function f(o) { o = o || {}; ... } ``` 颿°ã®å é ãªã©ã§ãããã©ã«ãåŒæ°ã®èšå®ãªã©ã«å€§å€è¯ã䜿ãããã€ãã£ãªã ã§ããäŸãã°oãundefinedã®æãªã©ã«ãããã©ã«ãå€ãšããŠç©ºã®ãªããžã§ã¯ããèšå®ããããšãããããªçšæ³ã§äœ¿ãããŸããäžèšã®||ãšåããªã®ã§ãããç¹ã«ããããèŠãã®ã§å¥é ç®ã«åããŸããã v = v || {}
```javascript var n = +v || 0; ``` vã®æ°å€åã«å€±æããå Žåã«ãNaNã§ã¯ãªããŠãŒãã«ããã€ãã£ãªã ã§ããvããŒãã ã£ãå ŽåããŒãã«ãªãã®ã§å®å¿ã§ãã +v || 0 ïŒæ°å€åããã€NaN以å€ãä¿èšŒïŒ
```javascript var i = v | 0; ``` v | 0 ïŒæŽæ°åïŒ
vãæŽæ°ã«ããŸããJavaScriptã§ã¯ãããæŒç®ã¯æŽæ°åã«å¯ŸããŠããé©çšåºæ¥ãªãã®ã§ããããå©çšããŠåŒ·å¶çã«æŽæ°ã«ããã€ãã£ãªã ã§ããvãæååã®å Žåã§ãããŸãæ°å€åããããã®åŸæŽæ°åãããŸãã
ãªããMath.floor
ã§ã䌌ããããªåŠçã«ãªããŸããããã€ãã¹æ°å€ãæ±ã£ãå Žåã®æåãéãã®ã§æ°ãã€ããŠãã ããã
console.log(-2.1 | 0); // -2
console.log(Math.floor(-2.1)); // -3
ããšã现ãã話ã§ããããããæŒç®åã¯æŒç®åã®åªå é äœãééãã人ã倧å€å€ãã®ã§ãæ°åŒã®äžã§äœ¿ãéã«ã¯æ¬åŒ§ã§å²ã£ãŠæžããã»ããè¯ããšæããŸãã
```javascript console.log(~~(2.1)); // 2 ``` ~~v ïŒæŽæ°åïŒ
v | 0
ãšåãããã«æŽæ°åããã€ãã£ãªã ã§ããå人çãªå°è±¡ã§ãããv | 0
ã®æ¹ãã¡ãžã£ãŒã§ããåèŠã§çè§£ã§ããå¯èœæ§ããŸã é«ãã®ã§ãv | 0
ãäœ¿ãæ¹ãè¯ãã®ã§ã¯ãªãããªãšæããŸãã䌌ããããªã€ãã£ãªã ã§ v >> 0
ïŒãããã·ããïŒããããŸããã
```javascript var b = !!v; ``` vã®å€ãbooleanã«å€æããã€ãã£ãªã ã§ããäŸãã°ç©ºæååããŒããNaNãundefinedãnullãªã©ãfalseã«ãããã以å€ãtrueã«ããŸãã !! ïŒè«çåïŒ
å®éã¯ãtrue/falseãæç¢ºã«ããªããã°ãããªãç¶æ³ã¯ããŸããªããšã¯æãã®ã§ãããä»èšèªããã®ç§»æ€ãªã©ã®ã©ã€ãã©ãªãªã©ã§ã¯æ£èŠãããŸãã
```javascript var v = +"a"; // NaN if(v != v) { console.log("v is Not a Number!"); } ``` if(v != v) ïŒNaNãã§ãã¯ïŒ
NaNãã§ãã¯ã§ããNaNã¯JavaScriptã®äžã§ãå¯äžèªåèªèº«ãšã®æ¯èŒã«å€±æããå€ãšãªã£ãŠããŸãïŒNaNãšã®æ¯èŒã¯çžæãã©ããªå€ã§ãå¿ ã倱æããïŒããã£ãŠãæ°å€åã®å Žåã§ããŒããšNaNãæ¯èŒããéã«ãã®ã€ãã£ãªã ã䜿ãããšããããŸãã
ããããèšããŸã§ããªããããã¯isNaN颿°ãšåãåŠçã«ãªããŸããã¹ããŒãã倧å€éèŠã§ããå±é¢ã§ãªããã°ãNaNãã§ãã¯ã«ã¯isNaNã䜿ã£ãã»ãããèªãã äººã¯æå³ãéããããããããªãããªãšæããŸãã
ïŒè¿œèš: isNaN颿°ã¯ãäŸãã°"a"ã®æååãªã©ãæ°å€åããéã«NaNã«å€æããããã®ãNaNãšå€å®ããŸããäžæ¹ãv != v ã ãšçŽç²ã«NaNã®ã¿ãå€å®åºæ¥ãŸããæ°å€ä»¥å€ã®å€ã«å¯ŸããŠã¯ãisNaNãš v != v ã®åäœã倧ããéãã®ã§ã泚æãã ããïŒ
```javascript var a = [1, 2, 3, 4, 5]; if(!~a.indexOf(0)) { console.log("0 is not in a"); } if(!~a.indexOf(3)) { console.log("3 is not in a"); } if(~a.indexOf(5)) { console.log("5 is in a"); } ``` ~array.indexOf() ïŒé åã®å€æ¢çŽ¢ïŒ
indexOféå®ã®ã€ãã£ãªã ã§ããindexOf颿°ã¯ãèŠçŽ ãååšããªãã£ãå Žåã«-1ãè¿ããååšããå Žåã«ã¯èŠçŽ ã®indexãè¿ããŸããç°¡åã«èšããšã倱æ==-1ãæå>=0ããšãªããŸãã
ããã«ãããåŠå®ãå ¥ããŸãããããåŠå®ã§ãªããããªããã®è©³çްã¯çããŸããã-1ã®ãããåŠå®ã¯0ã«ãªãã0ãå«ããã®ä»ãã¹ãŠã®å€ã®ãããåŠå®ã¯0以å€ã«ãªããŸãã
ãã£ãŠãindexOfã®è¿å€ã«ãããåŠå®ããããå Žåã倱ææïŒ-1ïŒã®å Žåã®ã¿ãŒããæåæã¯ãŒã以å€ãšãªãã®ã§ããããå©çšããŠé åã®äžã«èŠçŽ ããããã©ãããç¥ãããšãåºæ¥ãŸãã
ããã¯æ¥µããŠå¯èªæ§ã®æªãã€ãã£ãªã ã§ããããã€æ®éã« a.indexOf(v) != -1
ãšæ¯èŒããå Žåã«æ¯ã¹ãŠé床çã«å
šãæ©æµããªããšèšãåã£ãŠãåé¡ãªãã»ã©ã®å·®ãããããŸãããäžéšã®ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§å€æ§ãããŠããã®ã§ãæå³ã¯ç¥ã£ãŠãããã»ããè¯ããããããŸããããèªåã§æžãã®ã¯ããŸãããããããŸããã
ã¡ãªã¿ã«æååã®å Žåã§ãå©çšã§ããŸãããæè¿ã®ãã©ãŠã¶ã§ã¯ããããindexOfã䜿ãããæ£èŠè¡šçŸã䜿ã£ãã»ããé«éã ãšæããŸãã
var s = "Hello world";
if(/e/.test(s)) { console.log("e exists"); }
```javascript var global = new Function("return this;")(); console.log(global.JSON); ``` ã°ããŒãã«ãªããžã§ã¯ãã®ååŸã§ããäžè¬çã«ãã©ãŠã¶ã®ã°ããŒãã«ãªããžã§ã¯ãã¯windowã§ååŸåºæ¥ãã®ã§ãããäŸãã°node.jsãªã©ã§ã¯ãããå©çšã§ããªãã®ã§ãäž¡è ã§å©çšãããç°å¢ãæ³å®ããå Žåã«ã¯ãã®ãããªã€ãã£ãªã ã§ååŸããããšã«ãªããŸãã new Function("return this;")() ïŒã°ããŒãã«ãªããžã§ã¯ãã®ååŸïŒ
以åã¯ãã£ãšç°¡åã«
ã§ååŸããããšãåºæ¥ãã®ã§ãããStrict Modeã§ã¯é¢æ°å ã®thisãundefinedãè¿ãããã«ãªãã®ã§ãã®æ¹æ³ã¯å©çšã§ããŸãããä»ã®ãæäžãåžžã«strict modeãããããšãåæã«ãã¹ãã ãšæãã®ã§ãnew Functionã䜿ã£ãæ¹æ³ã䜿ãããã«ãããšãããšæããŸãã
ã¡ãªã¿ã«èè¶³ã§ããããªãStrict Modeã§ãnew Functionã®å Žåã«ã¯ã°ããŒãã«ãªããžã§ã¯ããå ¥ã£ãŠãããã«ã€ããŠã¯ãStrict Modeã®äŒæ¬ãªã©ã®çްãã仿§ã調ã¹ãŠãããããšããããã«ãªããšæããŸãã
```javascript var isStrict = function() { return !this; }(); ``` function() { return !this; }() ïŒStrict Modeãã§ãã¯ïŒ
çŸåšstrict modeãã©ããããã§ãã¯ããã€ãã£ãªã ã§ããäžèšã®ãstrict modeå ã§ã¯thisãundefinedã«ãªãããšãå©çšããŠãããŸãã
ããã玹ä»ããŠãããŠãªãã§ãããçŸåšstrict modeãã©ããããã§ãã¯ããããšã£ãŠãã£ãã«ãªããšæããŸããã
```javascript if(typeof(o) == "undefined") { console.log("undefined detected"); } ``` undefinedãã§ãã¯ã§é »ç¹ã«èŠãããæ§æã§ããããã®æ§æãªãã§ã¯ã®æå³ããããŸããäŸãã°åãããã«undefinedããã§ãã¯ããããšãã«ã typeof(v) == "undefined" ïŒundefinedãã§ãã¯ïŒ
if(o === void 0) { console.log("undefined detected"); }
ãšæžããŠãundefinedã®ãã§ãã¯ã¯å¯èœã§ãïŒvoidã¯äœãåŒæ°ã«ãšã£ãŠãundefinedãè¿ãæ§æã§ããã===ãã§ãã¯ã¯nullãšundefinedãåºå¥ããŠæ¯èŒããŸãïŒãããããoèªäœãããŒã«ã«ã¹ã³ãŒãã§ãã°ããŒãã«ã¹ã³ãŒãã§ã宣èšãããŠããªãå Žåããã®æžãæ¹ã ãšoã®åç §ã®æç¹ã§ãªãã¡ã¬ã³ã¹ãšã©ãŒãèµ·ãã£ãŠããŸããŸãã
äŸãã°ããããã®ãããã©ãŠã¶ãçšæãããã«ãã€ã³ãªããžã§ã¯ãã®ååšããã§ãã¯ãããšãã§ããå€ãJavaScriptã§ã¯ååšããªãJSONãªããžã§ã¯ããååšãããã©ããã確èªããããšãã«ããã åçŽã«JSONãåç §ããŠããŸããšãªãã¡ã¬ã³ã¹ãšã©ãŒã«ãªã£ãŠããŸããŸããããšãã£ãŠãwindow.JSONã§ç¢ºèªãããšãnode.jsãªã©ã®windowããªãç°å¢ã§ã®åäœãã§ããªããªã£ãŠããŸããŸãããã ã®ååšãã§ãã¯ã§ãäžèšã®ã°ããŒãã«ãªããžã§ã¯ãã®ååŸãŸã§é 匵ãã®ã¯ã¡ãã£ãšããããªãã®ã§ãããããéã«ã¯ãã®typeofæ¹åŒãã€ãã£ãŠååšç¢ºèªãããæ¹æ³ããã¹ãã«ãªãã§ãããã
ãªãã¹ããŒããæ°ã«ããæ¹ãå€ãããšæããŸãããtypeofã¯é«éã§ãããåºå®æåååå£«ã®æ¯èŒãªã®ã§ãã¡ãã®é床ãããªãéãæé©åãããã®ãäžè¬çã§ããããŸãæ°ã«ããããããšã¯ãªããšæããŸãã
ãªããundefinedãvoid 0
ã§ã¯ãªããŠundefinedãšæžããŠåç
§ããã®ã¯ãå
éšçã«ã¯window.undefinedãåç
§ããããšã«ãªãã®ã§ãããŸã奜ãŸããªãæžãæ¹ãšãªããŸãããããã«window.undefinedã®å€ãæžãæããããããšã¯ãªããšèããŠãããšã¯æããŸããâŠã
```javascript var n = 0x80000000; console.log(n); // 2147483648 == 0x80000000 console.log(n | 0) // -2147483648 console.log(n | 1) // -2147483647 console.log((n | 1) >>> 0) // 2147483649 ``` 32ãããã®æŽæ°å€ãã匷å¶çã«ç¬Šå·ãªãã«å€æããã€ãã£ãªã ã§ããJavaScriptã§ãã€ããªãæ±ã人ã«ãã圹ç«ããªããšæããŸãã v >>> 0 ïŒç¬Šå·ãªãæŽæ°åïŒ
JavaScriptã¯æ°å€ã¯ãã¹ãŠæµ®åå°æ°ç¹åïŒfloatåïŒã§æ±ãããã®ã§ããããããæŒç®ãããéã«ã¯å éšçã«ToInt32ãåŒã°ããŠ32ãããã®æŽæ°å€ã«å€æãããŸãããã®éã®å€æã笊å·ä»ãã§è¡ãããã®ã§ãäžçªäžã®ããããç«ã£ãŠããŸã£ãå Žåã«ã¯ãã€ãã¹ã®å€ãšããŠåŠçãããŠããŸãããã®åŸã®èšç®ã«æ¯éãèµ·ããããšããããŸãããããããšãã«ãã®ã€ãã£ãªã ã䜿ãããšã«ãã£ãŠãå éšçã«ToUint32ãåŒã¶ããšã«ãã£ãŠç¬Šå·ãªãã®æŽæ°åã«äžåºŠå€æããŠããããã®å€ããã®åŸã®èšç®ã«å©çšããããšãåºæ¥ãããã«ãªããŸãã
ã»ãšãã©ç®ã«ããããšã¯ãªãã§ããããããã€ããªãæ±ã£ãããæ¥µéãŸã§ãããèšç®ãå¹çåããããšãããšãããªãé«ãé »åºŠã§æ±ãããšã«ãªãã§ãããã
ãã远å ã§ããããâŠããšãããã®ãããã°ã Twitter ã® @tkihira ãŸã§ãç¥ãããã ããã