ç§ãã¡ã¯ããªãã«ãšã£ãŠé¢çœããŠçããããšãããããšããŸããã ç§ãã¡ãæåããããšãæ¬åœã«é¡ã£ãŠããŸãã ãªããããªã®ããçãã説æããªãã«ããªããå»ããããããŸããã§ããã æ£ããããŸãããã
ãããããã³ã³ãã¹ãã®æ§åãæãåºããŠããã ããããšæããŸããJSã«é¢ãã15ã®è³ªåã®4ã©ãŠã³ããReactã«é¢ãã15ã®è³ªåã®ã©ãŠã³ãã®ãã¡ã®1ã€ã10ã®è³ªåã®æ±ºåããããŸããã

ã«ããã®äž-æåã®4ã©ãŠã³ãã®ã¿ã¹ã¯ã®åæã
ããã¯ãåæã®2çªç®ã®éšåã§ãã
ããã§è³ªåã«åå¿ãã
ã©ããã£ãŠããããã£ãã®ïŒ éžæã§ããã¹ããã¯ãããããã«ãçŽ80ã90ã®è³ªåãçæããå¿
èŠããããšå€æããŸããã ãã®åŸããã¹ãŠããããã¯ã«åå²ããŸããã
- ãã©ãŠã¶ã€ãã³ã
- ããŸããŸãªAPIïŒArrayãSetãdefinePropertyãªã©ïŒã
- æ°é
ã
- åæ°ãæ±ã
- å·»ãäžã
- ã€ãã³ãã«ãŒã
- å倿
- ã¿ã€ã
- è«çïŒè«çANDããã³ORïŒ
ãã®åŸã質åã¯4ã©ãŠã³ãã«æž¡ã£ãŠé
åžãããŸããã ãã¹ãŠã®ãã¢ãŒã®è€éããåãã«ããããã«ããããã®ãã¹ãã«åæ Œãã質åãç°¡åãªå Žæãå°é£ãªå Žæãç¹å®ããæªè§£æ±ºã®è³ªåãããé©åãªè³ªåã«çœ®ãæããŠäœåºŠã蚪åããŸããã ãããŠãåã©ãŠã³ãã®ç¹å®ã®ãããã¯ã«ã€ããŠãã»ãŒåæ°ã®è³ªåãäœæããŸããã ãã®çµæãç°ãªããã¢ãŒã§äŒŒããããªè³ªåããããŸããããåã質åã§ã¯ãªãã£ãããšã倿ããŸããã
ãã®ãããå€ãã®éè€ãã説æãååšããããããã¢ãŒãæŽçããã®ã¯ããŸã䟿å©ã§ã¯ãªãããã§ãããããã¯ããšã«ãããã確èªããããšããå§ãããŸãã æãåçŽãªãã®ããå§ããŸãããã
泚ç®ãã¹ã質åïŒ
ã³ã³ãœãŒã«ã«ã¯äœã衚瀺ãããŸããïŒ
console.log(0,1 + 0,2); a) 0.30000000000000004 b) 0.3 c) 2 d) 0 1 2
åç+è§£ædïŒ0 1 2
ããã¯æ°åã®éã«ãããã§ã¯ãããŸãã.
質åãæ¬¡ã®ããã«ãã©ãŒããããããšïŒ
console.log(0, 1 + 0, 2);
ãã¹ãŠãæããã«ãªããŸã
ã³ã³ãœãŒã«ã«ã¯äœã衚瀺ãããŸããïŒ
(() => { 'use strict'; a = null + undefined; console.log(a); })(); a) 0 b) NaN c) null d)
åç+è§£ædïŒãšã©ãŒ
a
ã¯å€æ°ãšããŠïŒå€æ°å®£èšã§ã¯ãªãïŒäœæãããªãããã代å
¥åŒãæé»çã«this.a
å²ãåœãŠãããŸãã ã°ããŒãã«å€æ°window.a
ã¯ã¹ããªã¯ãã¢ãŒãã§äœæãããŸãããããã¯çŠæ¢ãããŠããŸãã
ã³ã³ãœãŒã«ã«ã¯äœã衚瀺ãããŸããïŒ
let foo = function bar() { return 123; }; console.log( typeof bar() ); a) 'function' b) 'number' c) 'undefined' d)
åç+è§£ædïŒãšã©ãŒ
ããã¯é¢æ°åŒïŒåŒïŒã§ãããã®å Žåã颿°ã®ååã¯é¢æ°ã«å¯ŸããŠããŒã«ã«ã§ãã 颿°ãåŒã³åºãã«ã¯ã bar
ã§ã¯ãªãfoo
ãåŒã³åºãå¿
èŠãããbar
ã 宣èšã®å Žåãçãã¯number
ãŸãã
åæ°ã®åãæ±ãã«é¢ãã質åïŒ
ã³ã³ãœãŒã«ã«ã¯äœã衚瀺ãããŸããïŒ
console.log(0.1 ** 2); a) 0.2 b) 0.01 c) 0.010000000000000002 d) NaN
ã³ã³ãœãŒã«ã«ã¯äœã衚瀺ãããŸããïŒ
console.log(0.1 + 0.2); a) 0.30000000000000004 b) 0.3 c) 2 d) NaN
åç+è§£æaïŒ0.30000000000000004
**
-ããã¯0.1
2ä¹Math.powã®é¡äŒŒç©ã§ã-0.01ã«ãªããŸãããJSã§ã¯ïŒä»ã®å€ãã®èšèªãšåæ§ã«ïŒ æµ®åå°æ°ç¹æ°ãæäœããéã®æäœã®ç²ŸåºŠã«æ¢ç¥ã®åé¡ããããŸã ã 0.010000000000000002
ã«ãªããŸã0.010000000000000002
ããã¯ããã€ããªã·ã¹ãã ã§ã¯ç¡éã®ç«¯æ°ãåŸãããããã§ãã JSã®æ°å€ã«ã¯åžžã«64ããããå²ãåœãŠãããŸãããã¹ãŠã®æ°å€ã¯åžžã«å粟床浮åå°æ°ç¹ã§ãã 远å ãããšåãããšãèµ·ãããŸãã
質åã«ããå°ãè€éã«ãªããŸãã
ãã©ãŠã¶ãŒã®ã€ãã³ãïŒ
èŠçŽ ã«ã¯ã€ãã³ããã³ãã©ãŒããããŸããããã®ãã³ãã©ãŒå
ã®å€ã¯åžžã«åãã§ããïŒ
elem.onclick = function(event) { } a) event.target event.currentTarget b) event.target this c) event.currentTarget this d)
åç+è§£æcïŒevent.currentTargetããã³ãã
this-åžžã«èŠçŽ ãæããŸã
currentTarget
ã€ãã³ãããã³ã°ããèŠçŽ
target
ã€ãã³ããçºçããèŠçŽ
divãã¯ãªãã¯ãããšããã®ã³ãŒãã¯äœãåºåããŸããïŒ
div.onclick = function() { console.log(1) }; div.onclick = function() { console.log(2) }; div.addEventListener('click', function() { console.log(3) }); a) 1 b) 1 3 c) 2 3 d) 3
åç+è§£æcïŒ2 3
onclickã¯console.log(1)
ãã³ãã©ãŒã远å ãconsole.log(1)
ããæ¬¡ã®è¡ã§ã¯æ°ãã颿°ã§ãããã°ã©ã€ã³ããã console.log(2)
ã®ã¿ãæ®ããŸãã onclick
ã¯DOMããããã£ã§ãããåžžã«1ã§ã
ã€ãã³ãã¯ããã³ã°ããé åºã§æ©èœããæåã®2ãæ¬¡ã«3ã衚瀺ãããŸãã
addEventListener
æ°åå®è¡ãããšããããããæ©èœããŸãã ãã³ãã©ãŒã¯ã€ãã³ãããã¥ãŒã«è¿œå ããŸãã
ããŸããŸãªAPIã«é¢ãã質åã»ã¯ã·ã§ã³
definePropertyïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
(() => { const obj = { key: 1 }; Object.defineProperty(obj, 'key', { enumerable: false, configurable: false, writable: false, value: 2 }); console.log(obj.key); obj.key = 3; console.log(obj.key); })(); a) 1, 2 b) 2, 2 c) 2, 3 d)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
(() => { 'use strict'; const obj = { key: 1 }; Object.defineProperty(obj, 'key', { enumerable: false, configurable: false, writable: false, value: 2 }); console.log(obj.key); obj.key = 3; console.log(obj.key); })(); a) 1, 2 b) 2, 2 c) 2, 3 d) 2,
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
(() => { const obj = { key: 1 }; Object.defineProperty(obj, 'key', { enumerable: false, configurable: false, writable: true, value: 2 }); console.log(obj.key); obj.key = 3; console.log(obj.key); })(); a) 1, 2 b) 2, 2 c) 2, 3 d)
åç+è§£æcïŒ2ã3
äžèšã®ãã¹ãŠã®è³ªåã§ã¯ã defineProperty
ã¡ãœããã®ç¥èãããå
·äœçã«ã¯writable
èšå®ãdefineProperty
ãŸãã false
èšå®ãããŠããå Žåã defineProperty
2çªç®ã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæž¡ãããããŒã®å€ã倿Žããããšã¯çŠæ¢ãããŠããŸãã å¯äžã®éãã¯ãã¹ããªã¯ãã¢ãŒãããªãå Žåãã¹ããªã¯ãã¢ãŒããuse strict
ãããšããã¹ãŠãæ£åžžã§ããããã«èŠããããŸãããå€ã¯å€æŽããããã¹ããªã¯ãã¢ãŒãã§ã¯ãšã©ãŒãçºçããŸãã
å¢åïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let x = 5; console.log(x++); a) 5 b) 6 c) '5++' d)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const a = 5; console.log(a++); a) 5 b) 6 c) '5++' d)
çãdïŒãšã©ãŒ
æ¥å°ŸèŸåœ¢åŒã®ç¯çœªã䜿çšããå Žåãå€ã¯å¢å ããåã«è¿ãããŸãã
ãããŠãã¬ãã£ãã¯ã¹ã®åŸã«ãããªãã¡ console.log(++5)
ã¯6
const
ã¯äžæžãã§ããŸããã æ°å€ã¯ããªããã£ãã§ããã€ã³ã¯ãªã¡ã³ããããšã倿°ã¯æ°ããå€ã§äžæžãããããšã©ãŒãçºçããŸãã
ã»ããïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const a = [...new Set([1, 1, 2, , 3, , 4, 5, 5])]; console.log(a); a) [1, 1, 2, , 3, , 4, 5, 5] b) [1, 2, undefined, 3, 4, 5] c) [1, 1, 2, undefined, 3, undefined, 4, 5, 5] d)
çãbïŒ[1ã2ãæªå®çŸ©ã3ã4ã5]
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let set = new Set([10, '10', new Number(10), 1e1, 0xA]); console.log(set.size); a) 5 b) 3 c) 2 d) 1
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let obj = {}; let set = new Set([obj, obj, {}, {}, {...{}}, {...obj}]); console.log(set.size); a) 6 b) 5 c) 2 d) 1
çãbïŒ5
Set
ã¯ã»ããã§ãããå®çŸ©äžãåãå€ãèšå®ããããšã¯ã§ããŸããã åé¡ã¯ããããã®å€ãã©ã®ããã«æ¯èŒãããã§ãã ããªããã£ãã¯å€ã«ãã£ãŠæ¯èŒããããªããžã§ã¯ãã¯åç
§ã«ãã£ãŠæ¯èŒãããŸãã
ããèªäœã¯ããŒã¿åãåŒçšãããä»»æã®å1e1
ããã³0xA
å€ãæ ŒçŽã§ããŸã1e1
鲿³ã«å€æããã10ãååŸããŸãã
ãããŠãæ°ãããªããžã§ã¯ãã¯åžžã«çãããããŸããïŒ console.log({} == {})
ã¯false
ãè¿ãfalse
ãªããžã§ã¯ãã¯ã¡ã¢ãªã®ããŸããŸãªå Žæã«æ°ããæ¹æ³ã§äœæããããããã®ãªã³ã¯ã¯çãããããŸããã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(Infinity / Infinity); a) NaN b) 1 c) Error d) Infinity
çãaïŒNaN
ç¡é倧ãç¡é倧ã«åå²ããç¡é倧ããç¡éå€§ãæžç®ããããšã¯äžå¯èœã§ãã æ°åŠçãªèгç¹ããã¯ãäžç¢ºå®æ§ãåŸãããŸãInfinity
ãš0
ãšã©ãŒãä¹ç®ããŠãæ°åŠçãªæäœãçºçããªãå Žåã«åãããšãèµ·ãããŸãNaN
ã¹ãã¬ããã«é¢ãã質åïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const a = { ...{ a: 1, b: 2, c: 3 }, ...{ a: 2, c: 4, d: 8 } }; console.log(a); a) { a: 2, b: 2, c: 4, d: 8 } c) { a: 1, b: 2, c: 3, d: 8 } c) { a: 1, b: 2, c: 3, a: 2, c: 4, d: 8 } d)
çãaïŒ{aïŒ2ãbïŒ2ãcïŒ4ãdïŒ8}
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const a = [...[1, 2], ...[[3, 4]], ...[5, 6]]; console.log(a); a) [1, 2, 3, 4, 5, 6] b) [1, 2, [3, 4], 5, 6] c) [[1, 2], [[3, 4]], 5, 6] e)
åç+è§£æbïŒ[1ã2ã[3ã4]ã5ã6]
Spread
æŒç®åã¯ããªããžã§ã¯ããŸãã¯é
åãéšåã«è§£æããã®ã«åœ¹ç«ã¡ãŸãã ...
åŸã®ãšã³ãã£ãã£ããå€ãååŸããäœæãããå€ã«ã³ããŒããŸãã é
åãšãªããžã§ã¯ãã®å Žåã1ã¬ãã«ãŸã§éãããšã«æ³šæããŠãã ããã ...[[1]]
ã¯ãèŠçŽ èªäœã§ã¯ãªãã1ã€ã®èŠçŽ ãæã€é
åãè¿ããŸãã ãªããžã§ã¯ãã«éè€ããå€ãå«ããããšã¯ã§ããŸããããããã£ãŠãåŸã«å
¬éãããå€ã¯ã以åã«å
¬éãããå€ã«ãã£ãŠäžæžããããŸãã ããã䜿çšããŠãããã©ã«ãèšå®ãæå®ã§ããŸãã
const fn = (actualProps) => ({ ...defaultProps, ...actualProps })
ãã¹ãŠã®ããã©ã«ãå€ã¯ãæž¡ãããå€ãããã°ãããã«ãã£ãŠãªãŒããŒã©ã€ããããŸãã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(parseInt(' -10,3 ')); a) -10,3 b) -10 c) TypeError d) NaN
åç+è§£æbïŒ-10
MDNã䜿çšããå
æ¬çãªèª¬æïŒ
parseInt颿°ã¯ãæå®ãããçªå·äœç³»ã®æ°åã§ã¯ãªãæåãæ€åºãããšããã®æåãšåŸç¶ã®ãã¹ãŠã®æåãã¹ããããïŒé©åãªå Žåã§ãïŒããã®æåã®åã®æååã®éšåãã倿ãããæŽæ°ãè¿ããŸãã parseIntã¯ãæ°å€ã®å°æ°éšåãåãæšãŠãŸãã è¡ã®å
é ãšæ«å°Ÿã«ã¹ããŒã¹ã䜿çšã§ããŸãã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const t = { a: 6, b: 7 }; const p = new Proxy(t, { get() { return 12; }, }); console.log(pa); pa = 18; console.log(pa); console.log(ta); a) b) 12 18 18 c) 12 18 6 d) 12 12 18 e) 6 18 6
åç+è§£ædïŒ12 12 18
Proxy
ã¯ããªããžã§ã¯ããžã®ãã¹ãŠã®åŒã³åºããã€ã³ã¿ãŒã»ããããŸãã ãã®å Žåã get
ã¡ãœããã®ã¿ããããã·ããã¢ã¯ã»ã¹ããŠãããªããžã§ã¯ãã®ã©ã®ãã£ãŒã«ãã«é¢ä¿ãªããåžžã«12
ãè¿ããŸãã ãã®å Žåãsetã«ã¯è§Šããããããã·ã«ã¢ã¯ã»ã¹ãããšããªããžã§ã¯ãã®å€ã眮ãæããããŸãã
é
åïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let arr = []; arr[1] = 1; arr[5] = 10; console.log(arr.length); a) 1 b) 5 c) 6 d) 10
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let arr = new Array(3); console.log(arr[1]); a) undefined b) 1 c) 3 d)
åç+è§£æaïŒæªå®çŸ©
1ã€ã®æ°å€åŒæ°ã§Array
ãäœæãããšããããã¯é
åã®é·ããæå³ããŸãã é
åã¯ç©ºã§äœæããããã¹ãŠã®å€ã¯undefined
ã§ãã ååšããªãé
åãã£ãŒã«ããžã®ã¢ã¯ã»ã¹ãäœæãããšãåãããšãèµ·ãããŸãã Array
ã«æ°å€ãæž¡ããšããã®èŠçŽ ãæã€é
åãè¿ãããããšã«æ³šæããŠãã ããã Array('a')
ã¯['a']
ãè¿ã['a']
è«çæŒç®&&
ã ||
ã ==
ãªã©ïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log([] && 'foo' && undefined && true && false); a) [] b) 'foo' c) undefined d) true
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(0 || 1 && 2 || 3); a) 0 b) 1 c) 2 d) 3
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(0 || '' || 2 || undefined || true || false); a) 0 b) false c) 2 d) true
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(2 && '1' && null && undefined && true && false); a) 2 b) false c) undefined d) null
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log([] && {} || null && 100 || ''); a) true b) 100 c) '' d) {}
åç+è§£ædïŒ{}
空ã®ãªããžã§ã¯ã{}
ãštrue
空ã®é
å[]
ã¯true
ã§ãã
ç©ºã®æåå''
ã null
ããã³undefined
ã¯false
è«ççãŸãã¯||
-trueã®å Žåãå·Šã®ãªãã©ã³ããè¿ããŸãããã以å€ã®å Žåãå³ã®ãªãã©ã³ããè¿ããŸãã
è«çããã³&&
-å·ŠåŽã®ãªãã©ã³ããfalseã®å Žåããã以å€ã®å Žåã¯å³åŽã®ãªãã©ã³ããè¿ããŸãã
ããã¯ãããã©ã«ãã®ãã©ã¡ãŒã¿ãŒãçŸããåã«ã³ãŒãå
ã§èŠã€ããããšããããŸãã颿°ã«ãã©ã¡ãŒã¿ãŒããªãå Žåã¯ãããã©ã«ãã®ãã©ã¡ãŒã¿ãŒã䜿çšããŸãã
function f(userParams) { var params = userParams || defaultParams; }
çŸåšãReactã¯æ¡ä»¶ãçã§ãããã©ãããé »ç¹ã«ãã§ãã¯ããŠãããäœããã¬ã³ããªã³ã°ããŸãã
{ isDivVisible && <div>bla-bla</div> }
é
忝èŒïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const arrayFoo = [1, 2, 3, 4]; const arrayBaz = [1, 2, 3, 4]; console.log(arrayFoo == arrayBaz && arrayFoo == arrayBaz); a) false b) true c) undefined d)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log([null, 0, -0].map(x => 0 <= x)); a) [false, true, false] b) [false, true, true] c) [false, false, false] d) [true, true, true]
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const arrayFoo = [1, 2, 3, 4]; const arrayBaz = [1, 2, 3, 4]; console.log(arrayFoo >= arrayBaz && arrayFoo <= arrayBaz); a) true b) false c) undefined d)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const foo = [1, 2, 3, 4]; const baz = '1,2,3,4'; console.log(foo >= baz && foo <= baz); a) false b) true c) undefined d)
åç+è§£æbïŒtrue
==
åç
§ã«ããæ¯èŒã
æäœäžã«ã >, >=, <, <=
ãªãã©ã³ããããªããã£ãã«å€æããã arrayFoo
ã¡ãœãããarrayFoo
ã§åŒã³åºãããããªããã£ãå€arrayFoo
ãè¿ãããŸãããåãé
åãžã®åç
§ãè¿ãããŸãã æ¬¡ã«ã toString
ã¡ãœãããåŒã³åºãããšã«ããããªããã£ãå€ãžã®å€æãè¡ãããŸãããã®ã¡ãœããã¯ãé
åã®æåå衚çŸãã1,2,3,4ãã®åœ¢åŒã§è¿ãã2ã€ã®é
åãèŸæžçã«æ¯èŒããŠtrue
ãè¿ãtrue
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(+0 == -0); console.log(+0 === -0); console.log(Object.is(+0, -0)); a) true, false, false b) true, true, false c) false, true, true d) false, false. false
åç+è§£æbïŒtrueãtrueãfalse
MDNã«ããå
æ¬çãªèª¬æïŒ
ãã®ã¡ãœããã®åäœïŒ Object.is
ã«ã€ããŠObject.is
ïŒã¯ã ===
æŒç®åãšåãã§ã¯ãããŸããã ===
æŒç®åïŒããã³==
æŒç®åïŒã¯ãæ°å€-0
ãš+0
çãããšNumber.NaN
ã Number.NaN
ã®å€ã¯ããèªäœNumber.NaN
ã¯çããNumber.NaN
ãŸããã
å·»ãäžãã«é¢ãã質åïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(str); const str = 'HeadHunter'; a) 'HeadHunter' b) undefined c)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
var arrayFunction = []; for (let i = 0; i <= 10; i++) { arrayFunction.push(() => i); } console.log(arrayFunction[3]()); a) 4 b) 0 c) 11 d) 3
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(str); var str = 'HeadHunter'; a) 'HeadHunter' b) undefined c) null c)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(foo); var foo; foo = foo ? 1 : 0; console.log(foo); a) b) undefined 0 c) '' 1 d) 0 0
颿°åŒã³åºãã¯æ©èœããŸããïŒ
getCompanyName(); function getCompanyName() { return 'HeadHunter'; } a) b) , . c)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
var arrayFunction = []; for (var i = 0; i <= 10; i++) { arrayFunction.push(() => i); } console.log(arrayFunction[3]()); a) 4 b) 0 c) 11 d) 3
åç+è§£æcïŒ11
颿°å®£èšã¯ãããã¢ããããŸãããåŒã¯ãããŸããã
var
ãããã¢ããããŸãããåæåãundefined
ãŸã§ã
let
ãšconst
ã¯ãããã¢ããããããããã¯å
ã«ã¹ã³ãŒããæã¡ãŸãã {}
éå®ãããŸãã
var
ã«ãŒããæ£ããæ©èœããããã«ã¯ãã¯ããŒãžã£ãŒã䜿çšããå¿
èŠããããŸããå€ã¯ãã®äžã«ä¿åãããŸãã
ïŒããã¯ä»¥åã¯ã€ã³ã¿ãã¥ãŒã®å€å
žçãªã¿ã¹ã¯ã§ããããä»ã§ã¯ããããŸããïŒ
var arrayFunction = []; for (var i = 0; i <= 10; i++) { (function(i) { arrayFunction.push(() => i); })(i); } console.log(arrayFunction[3]());
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(true + false); a) true b) false c) 1 d) 0
åç+è§£æcïŒ1
æŒç®åã¯ã©ããæååã§ã¯ãªãã +
ã¯æ°åã«ãªããŸãã 1 + 0
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log([] - 100 + ![]); a) false b) '-100' c) -100 d) NaN
åç+è§£æcïŒ-100
é
åã¯æååã«ãã£ã¹ããããŸãããã®åŸã -
æ°å€ã«ãã£ã¹ããããšã -100
ã«ãªããé
åãfalse
ãã£ã¹ããfalse
ãããã¯0
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log([[], []] + 1); a) 1 b) '1' c) ',1' d) NaN
åç+è§£æcïŒ 'ã1'
ãªããžã§ã¯ãã«å¯ŸããŠtoString
ãtoString
ãŸããã toString
ã¯é
åã®ãã¹ãŠã®èŠçŽ ã«å¯ŸããŠãåŒã³åºãããŸãã [].toString
ã¯ç©ºã®æåå''
ãè¿ããŸãã 倿ããã®ã¯, + 1
çã,1
ã§ãã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log([] + 100 + 5); a) 105 b) '1005' c) 1005 d) NaN
åç+è§£æbïŒ '1005'
é
åã¯æååã«éå
å¯èœã§ããããã®åŸãé£çµãæ¢ã«çºçããŠããŸãã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(1 + { a: 3 } + '2'); a) 6 b) '1[object Object]2' c) 3 d) NaN
åç+è§£æbïŒ '1 [ãªããžã§ã¯ããªããžã§ã¯ã] 2'
æååã«å€æ-ããã¯åãªãé£çµã§ãã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(10.toString() + 10 + 0x1); a) '10101' b) 21 c) '10100x1' d)
åç+è§£ædïŒãšã©ãŒ
æ°å€ã®å Žåãããã.
ã¯å°æ°éšã®å§ãŸããæå³ããããã«æ°åãå¿
èŠã§ã-ãšã©ãŒãçºçããŸãã
ãã®äŸãããŸãåäœãããã«ã¯ã 10..toString()
ãèšè¿°ããå¿
èŠããããŸã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(5 + false - null + true); a) '0true' b) NaN c) 6 d)
åç+è§£æcïŒ6
ããã§ã¯ãã¹ãŠãæ°å€ã«çž®å°ããã 5 + 0 - 0 + 1
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(true + NaN + false); a) true b) NaN c) false d) 1
åç+è§£æbïŒNaN
NaN
æ°åã远å ãããšãããã¹ãŠãæ°åã«ããŸãNaN
ãååŸããŸã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log('0x1' + '1' - '1e1'); a) 17 b) 7 c) '0x111e1' d) NaN
åç+è§£æbïŒ7
æåã®é£çµã®åŸã«ãã§ã«è¡ããããŸãã '0x11' - '1e1'
ãååŸããŸãã ãµã€ã³ã®ãããã§ããã¹ãŠãæ°åã«ããŸãã
0x11
鲿°ã®16é²è¡šèšã¯17
ã§ãã
1e1
ææ°åœ¢åŒã¯1 * 10 ** 1
ã€ãŸã ããã10
ã
typeofïŒ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let foo = () => { return null; }; console.log( typeof typeof foo ); a) 'function' b) 'string' c) 'null' d)
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
typeof function() {}.prototype; a) 'function' b) 'object' c) 'undefined' d)
åç+è§£æbïŒããªããžã§ã¯ãã
typeof
åžžã«æååãè¿ãã颿°ãåŒã³åºããããåªå
床ãäœãããã颿°ãæåã«å®è¡ãããè¿ãããçµæã«typeof
ãé©çšãããŸãã Functionãªããžã§ã¯ãã¯Function.prototypeãç¶æ¿ããŸãã Speckã¯ããããªããžã§ã¯ãã§ããããšãæç€ºçã«æ±ºå®ããŸãã
ã€ãã³ãã«ãŒãïŒ
çŽæã«é¢ãã2ã€ã®è³ªåããå§ããŸãããã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
Promise.reject() .then(() => console.log(1), () => console.log(2)) .then(() => console.log(3), () => console.log(4)); a) 1 4 b) 1 3 c) 2 3 d) 2 4
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
Promise.reject('foo') .then(() => Promise.resolve('bar'), () => {}) .then((a) => {console.log(a)}) a) foo b) bar c) undefined d)
åç+è§£æcïŒæªå®çŸ©
Promise.reject
æåŠãããç¶æ
ã®ãããã¹ãè¿ããŸãã
then
ã onFulfill
ããã³onReject
ã³ãŒã«ããã¯ã®2ã€ã®ãã©ã¡ãŒã¿ãŒãonFulfill
ããšã«onFulfill
ããŠonReject
ã ãã以åã«ãšã©ãŒãçºçããå Žåã onReject
ã³ãŒã«ããã¯ã«onReject
ãŸãã ãšã©ãŒããªãå Žåã¯ã次ã«onFulfill
then
ãŸãã ãŸãã () => {}
ã¯ç©ºã®ãªããžã§ã¯ãã§ã¯ãªãundefined
è¿ãããšãå¿ããªãã§ãã ããã空ã®ãªããžã§ã¯ããè¿ãã«ã¯ã次ã®ããã«èšè¿°ããå¿
èŠããããŸãã () => ({})
ã¿ã¹ã¯ã®é åºã
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
async function get1() { return 1; } function get2() { return 2; } (async () => { console.log(await get1()); })(); console.log(get2()); a) 1,2 b) 2,1 c) 1 d) 2
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
setTimeout(() => {console.log('in timeout')}); Promise.resolve() .then(() => {console.log('in promise')}); console.log('after'); a) in timeout, in promise, after b) after, in promise, in timeout c) after, in timeout, in promise d) in timeout, after, in promise
çãbïŒçŽæéããã¿ã€ã ã¢ãŠãåŸ
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
let __promise = new Promise((res, rej) => { setTimeout(res, 1000); }); async function test(i) { await __promise; console.log(i); } test(1); test(2); a) 1, 2 b) 2, 1 c) 1 d) 2
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log('FUS'); setTimeout(() => {console.log('RO')}) Promise.resolve('DAH!').then(x => console.log(x)); a FUS RO DAH! b) FUS DAH! RO c) RO FUS DAH! d) DAH! RO FUS
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
console.log(1); setTimeout(() => console.log('setTimeout'), 0); console.log(2); Promise.resolve().then(() => console.log('promise1 resolved')); console.log(3); a) 1, 2, 3, 'setTimeout', 'promise1 resolved' b) 1, 'setTimeout', 2, 'promise1 resolved', 3 c) 1, 2, 3, 'promise1 resolved', 'setTimeout' d) 1, 2, 'promise1 resolved', 3, 'setTimeout'
åç+è§£æcïŒ1ã2ã3ããpromise1ã解決ãããsetTimeoutã
æåã«ããã¹ãŠã®åæåŒã³åºããããªã¬ãŒããããã®åŸãåŒã³åºãã¹ã¿ãã¯ã空ã«ãªããšããã¥ãŒã«å
¥ãããããã®ïŒéåæã¿ã¹ã¯ïŒãåŒã³åºãããŸãã æåã®ãã€ã¯ãã¿ã¹ã¯-çŽæãšmutation observer
ã çŸåšã®ã¿ã¹ã¯ã®æåŸã«ããã¹ãŠã®ãã€ã¯ãã¿ã¹ã¯ãå®è¡ãããŸãããã®ãã€ã¯ãã¿ã¹ã¯ã«é¢é£ããŠãã€ãã³ãã«ãŒãããããã¯ã§ããŸãããã©ãŠã¶ã§ã¿ã¹ã¯ãå®äºãããšãã¬ã³ããªã³ã°ãè¡ãããŸãã ãã®åŸããã¯ãã¿ã¹ã¯-ã¿ã€ã ã¢ãŠããå®è¡ãããŸãã
ããã¯éåžžã«åçŽåãããäŸã§ãã詳现ã«ã€ããŠã¯ãããã€ã«ã»ãã·ã¥ããã®ã¹ããŒããèŠãããšããå§ãããŸã
ãããŠæåŸã®è³ªåã¯çŽæãšåŸ
ã€
ãã®ã³ãŒãã¯äœãåºåããŸããïŒ
const p = Promise.resolve(); (async () => { await p; console.log('1'); })(); p.then(() => console.log('2')) .then(() => console.log('3'));
aïŒ1 2 3
bïŒ2 1 3
cïŒ2 3 1
dïŒ3 2 1
åç+è§£æcïŒ2 3 1
仿§ã«ãããšã then
远å ããããããã¹ã¯æåã«å®è¡ããã then
ã®ã¿ç¶è¡ããå¿
èŠããããŸã
éåæé¢æ°ã®å®è¡ã ã¹ãã㯠ã ããããªããããªã®ããããã«è©³ããçè§£ããã«ã¯ã v8.devã®åªããèšäºãèªãããšããå§ãããŸãã