è¯ãäžæ¥ãåéïŒ
ããã¯ããã®ãªããžããªããã®äžäœ100ã®JavaScriptã®åºæ¬çãªè³ªåã®ãªã¹ãã§ãããçãåçãšIlyaKantorã®ModernJavaScript TutorialïŒJSRïŒããã³MDNãžã®ãªã³ã¯ãå«ãŸããŠããŸãã
ãã®ãªã¹ããš300以äžã®ç·Žç¿åé¡ã¯ç§ã®ã¢ããªã§å©çšã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯ã調æ»ãã質åãèšæ¶ããããã®ã¡ã«ããºã ãå®è£ ãããªãã©ã€ã³äœæ¥ãæäŸããŸãã
ãšã©ãŒã誀æ€ã®å¯èœæ§ã«ã€ããŠãè©«ã³ç³ãäžããŸããã©ããªåœ¢ã®ãã£ãŒãããã¯ãæè¿ããŸãã
14.09ã®ãšãã£ã·ã§ã³ããã
ã®ç¶ããåç §ããŠãã ããã
1.ãªããžã§ã¯ããäœæããã«ã¯ã©ãããã°ããã§ããïŒ
ãããè¡ãã«ã¯ããã€ãã®æ¹æ³ããããŸãããããã®ããã€ãã¯æ¬¡ã®ãšããã§ãã
ãªããžã§ã¯ããªãã©ã«ïŒ
const object = {}
ãªããžã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒïŒéæšå¥šïŒïŒ
const object = new Object()
Object.createïŒïŒ
ã¡ãœãããã®ã¡ãœããã䜿çšãããšããªããžã§ã¯ããåŒæ°ãšããŠæž¡ãããæ°ãããªããžã§ã¯ãã®ãããã¿ã€ãã«ãªããŸãã
// -
const object = Object.create(null)
ã³ã³ã¹ãã©ã¯ã¿ãŒ
颿°ã³ã³ã¹ãã©ã¯ã¿ãŒé¢æ°ãäœæãããnewãæŒç®åã䜿çšããŠããã®é¢æ°ã®ã€ã³ã¹ã¿ã³ã¹ïŒãªããžã§ã¯ãïŒãäœæããŸãã
function Person (name) {
const object = {}
object.name = name
object.age = 30
return object
}
const user = new Person('')
ã¯ã©ã¹ïŒ
class Person {
constructor(name) {
this.name = name
}
}
const user = new Person('')
JSR
MDN
2.ãããã¿ã€ããšã¯äœã§ããïŒ
ãããã¿ã€ãã¯ãæ¢åã®ãªããžã§ã¯ãã«åºã¥ããŠæ°ãããªããžã§ã¯ããäœæããããã«äœ¿çšãããŸãããã®ææ³ã¯ããããã¿ã€ãç¶æ¿ãšåŒã°ããŸãããªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ã®ãããã¿ã€ãã¯ãObject.getPrototypeOfïŒãªããžã§ã¯ãïŒãŸãã¯__proto__ããããã£ïŒ[[Prototype]]å éšé衚瀺ããããã£ïŒããå ¥æã§ããŸãã
JSR
MDN
3. callïŒïŒãapplyïŒïŒãbindïŒïŒã®éãã¯äœã§ããïŒ
ãããã®æ¹æ³ã®éãã¯ãäŸã䜿çšããŠèª¬æããã®ãæãç°¡åã§ãã
callïŒïŒã¡ãœããã¯ãæå®ãããthiså€ãšã³ã³ãã§åºåãããåŒæ°ã䜿çšããŠé¢æ°ãåŒã³åºããŸãã
const employee1 = { firstName: '', lastName: '' }
const employee2 = { firstName: '', lastName: '' }
function invite (greet1, greet2) {
console.log(\`${greet1}, ${this.firstName} ${this.lastName}. ${greet2}\`)
}
invite.call(employee1, '', ' ?') // , . ?
invite.call(employee2, '', ' ?') // , . ?
applyïŒïŒã¡ãœããã¯ãæå®ãããthiså€ãšé ååŒæ°ã䜿çšããŠé¢æ°ãåŒã³åºããŸãã
const employee1 = { firstName: '', lastName: '' }
const employee2 = { firstName: '', lastName: '' }
function invite (greet1, greet2) {
console.log(\`${greet1}, ${this.firstName} ${this.lastName}. ${greet2}\`)
}
invite.apply(employee1, ['', ' ?']) // , . ?
invite.apply(employee2, ['', ' ?']) // , . ?
bindïŒïŒã¡ãœããã¯ãæå®ãããthiså€ãæã€æ°ãã颿°ãè¿ããé åãŸãã¯ã³ã³ãã§åºåãããä»»æã®æ°ã®åŒæ°ãããã«æž¡ãããšãã§ããŸãã
const employee1 = { firstName: '', lastName: '' }
const employee2 = { firstName: '', lastName: '' }
function invite (greet1, greet2) {
console.log(\`${greet1}, ${this.firstName} ${this.lastName}. ${greet2}\`)
}
const inviteEmployee1 = invite.bind(employee1)
const inviteEmployee2 = invite.bind(employee2)
inviteEmployee1('', ' ?') // , . ?
inviteEmployee2('', ' ?') // , . ?
ãããã£ãŠãcallïŒïŒã¡ãœãããšapplyïŒïŒã¡ãœããã¯ããªããžã§ã¯ãã«ãã€ã³ããããåŸã«é¢æ°ãåŒã³åºããŸãã2ã€ã®éãã¯ãåŒæ°ã®åãæž¡ãæ¹æ³ã§ãããã®éãã¯ãã¡ãœããã®æåã®æåã§ç°¡åã«èŠããããšãã§ããŸããcallã¯ã³ã³ãïŒcommaãcïŒãapplyã¯é åïŒarrayãaïŒã§ããbindïŒïŒã¡ãœããã¯ãæå®ããããªããžã§ã¯ãã«ãã€ã³ããããæ°ãã颿°ãè¿ããŸãã
JSR-åŒã³åºã/é©çš
JSR-ãã€ã³ã
MDN-åŒã³åºã
MDN-é©çš
MDN-ãã€ã³ã
4. JSONãšã¯äœã§ããããŸãã©ã®ãããªã¡ãœããããããŸããïŒ
JSONã¯ãDouglasCrockfordã«ãã£ãŠçºæãããJavaScriptãªããžã§ã¯ãæ§æã«åºã¥ãããã¹ãããŒã¿åœ¢åŒã§ããããã¯ããããã¯ãŒã¯ãä»ããŠããŒã¿ã転éããããã«äœ¿çšãããéåžžãæ¡åŒµåã¯.jsonã§ãMIMEã¿ã€ãã¯application / jsonã§ãã
è§£æïŒJSONæååããªããžã§ã¯ãã«å€æããŸãã
JSON.parse(text)
æåååïŒãããã¯ãŒã¯ãä»ããŠéä¿¡ããããã«ããªããžã§ã¯ããJSONæååã«å€æããŸãã
JSON.stringify(object)
JSR
MDN
5. Array.sliceïŒïŒã¡ãœããã¯äœãããŸããïŒ
ã¹ã©ã€ã¹ïŒïŒã¡ãœããã¯ãéžæããé åèŠçŽ ãæ°ããé åãšããŠè¿ããŸããæåã®åŒæ°ã§æå®ãããã€ã³ããã¯ã¹ã§å§ãŸãã2çªç®ã®ãªãã·ã§ã³ã®åŒæ°ã§æå®ãããã€ã³ããã¯ã¹ã§çµãããå«ãŸãªãã¢ã€ãã ãè¿ããŸãã2çªç®ã®åŒæ°ããªãå Žåãæåã®åŒæ°ã§æå®ãããã€ã³ããã¯ã¹ã§å§ãŸããã¹ãŠã®èŠçŽ ãååŸãããŸãã
const arrayIntegers = [1, 2, 3, 4, 5]
const arrayIntegers1 = arrayIntegers.slice(0, 2) // [1, 2]
const arrayIntegers2 = arrayIntegers.slice(2, 3) // [3]
const arrayIntegers3 = arrayIntegers.slice(4) // [5]
ãã®ã¡ãœããã¯å ã®é åã倿Žããããã®ãµãã»ããã®ã¿ãæ°ããé åãšããŠè¿ãããšã«æ³šæããŠãã ããã
JSR
MDN
6. Array.spliceïŒïŒã¡ãœããã¯äœãããŸããïŒ
spliceïŒïŒã¡ãœããã¯ãèŠçŽ ãé åã«è¿œå ããããé åããåé€ãããããããã«äœ¿çšãããŸããæåã®åŒæ°ã¯èŠçŽ ã远å ãŸãã¯åé€ããããã®éå§äœçœ®ãæå®ãã2çªç®ã®ãªãã·ã§ã³ã®åŒæ°ã¯åé€ããèŠçŽ ã®æ°ãæå®ããŸããåŸç¶ã®ååŒæ°ïŒ3çªç®ãªã©ïŒãé åã«è¿œå ãããŸãã
let arrayOriginal1 = [1, 2, 3, 4, 5]
let arrayOriginal2 = [1, 2, 3, 4, 5]
let arrayOriginal3 = [1, 2, 3, 4, 5]
let array1 = arrayOriginal1.splice(0, 2) // [1, 2]; = [3, 4, 5]
let array2 = arrayOriginal2.slice(3) // [4, 5]; = [1, 2, 3]
let array3 = arrayOriginal3.slice(3, 1, 'a', 'b', 'c') // [4]; = [1, 2, 3, 'a', 'b', 'c']
spliceïŒïŒã¡ãœããã¯å ã®é åã倿ŽããæœåºãããèŠçŽ ã®é åãè¿ãããšã«æ³šæããŠãã ããã
JSR
MDN
7.ã¹ã©ã€ã¹ïŒïŒãšã¹ãã©ã€ã¹ïŒïŒã®éãã¯äœã§ããïŒ
äž»ãªéãã¯æ¬¡ã®ãšããã§ãã
| ã¹ã©ã€ã¹ | ã¹ãã©ã€ã¹ |
|---|---|
| å ã®é åã¯å€æŽãããŸãã | å ã®é åã倿ŽããŸã |
| å ã®é åã®ãµãé åãè¿ããŸã | åé€ãããèŠçŽ ãé åãšããŠè¿ããŸã |
| é åããèŠçŽ ãååŸããããã«äœ¿çšãããŸã | é åãžã®èŠçŽ ã®è¿œå /é åããã®èŠçŽ ã®åé€ã«åœ¹ç«ã¡ãŸã |
JSR
MDN -ã¹ã©ã€ã¹
MDN -ã¹ãã©ã€ã¹
8.ãªããžã§ã¯ããšãããã¯ã©ã®ããã«æ¯èŒãããŸããïŒ
ãªããžã§ã¯ãã¯ãå€ã«ããŒãèšå®ããããå€ãååŸããããããŒãåé€ããããããŒããšã«å€ãååšãããã©ããã倿ãããã§ãããšããç¹ã§ããããã«äŒŒãŠããŸãããã®ããã以åã¯ãªããžã§ã¯ããããããšããŠäœ¿çšãããŠããŸããããã ãããããã®éã«ã¯ããã€ãã®éãããããå Žåã«ãã£ãŠã¯ã«ãŒãã®äœ¿çšããã奜ãŸãããã®ã«ãªããŸãã
- ãªããžã§ã¯ãããŒã¯æååãšã·ã³ãã«ã®ã¿ã«ããããšãã§ãããããããŒã¯é¢æ°ããªããžã§ã¯ããå«ãä»»æã®å€ã«ããããšãã§ããŸã
- ãããããŒã¯é åºä»ããããŠããŸããããªããžã§ã¯ãããŒã¯é åºä»ããããŠããŸããããããã£ãŠãå埩ãããšããããããŒã¯è¿œå ãããé åºã§è¿ãããŸãã
- sizeããããã£ã䜿çšããŠãããã®ãµã€ãºãååŸã§ãããªããžã§ã¯ãããããã£ã®æ°ã¯æåã§å®çŸ©ãããŸã
- ãããã¯å埩å¯èœãªãšã³ãã£ãã£ã§ããããªããžã§ã¯ããå埩ããã«ã¯ãæåã«äœããã®æ¹æ³ã§ãã®ããŒãååŸããŠãããããããå埩ããå¿ èŠããããŸãã
- ãªããžã§ã¯ããããããšããŠäœ¿çšããå Žåãã©ã®ãªããžã§ã¯ãã«ããããã¿ã€ããããããããããèªäœã®ããŒããŠãŒã¶ãŒå®çŸ©ã®ããŒãšãªãŒããŒã©ããããå¯èœæ§ãããããšã«æ³šæããŠãã ããããããã£ãŠãããããªããžã§ã¯ãã®äœæã«ã¯Object.createïŒnullïŒã䜿çšããå¿ èŠããããŸãããçŸåšããã®ã¡ãœããã¯ã»ãšãã©äœ¿çšãããŠããŸããã
- ããŒã®è¿ éãªè¿œå /åé€ã«é¢ããŠã¯ããªããžã§ã¯ãã¯ããã©ãŒãã³ã¹ã®ç¹ã§ãããããå£ã£ãŠããŸã
JSR
MDN
9ãã==ãæŒç®åãšã===ãæŒç®åã®éãã¯äœã§ããïŒ
JavaScriptã«ã¯ãå€ãæ¯èŒãã2ã€ã®æ¹æ³ããããŸããå³å¯ïŒ===ãïŒ==ïŒãšæœè±¡ïŒ==ãïŒ==ïŒã§ããå³å¯ãªæ¯èŒã§ã¯ãå€ã¯ãã®ãŸãŸæ¯èŒãããç·©ãæ¯èŒã§ã¯ãå¿ èŠã«å¿ããŠãå€ã¿ã€ãã®æé»çãªå€æïŒãã£ã¹ãïŒãå®è¡ãããŸããå³å¯ãªæŒç®åã¯ãããŸããŸãªã¿ã€ãã®å€ãæ¯èŒããããã«æ¬¡ã®ã«ãŒã«ã䜿çšããŸãã
- 2ã€ã®æååã¯ãåãæåã»ãããåãé·ããåãäœçœ®ã«åãæåãããå Žåãå³å¯ã«çãããªããŸãã
- ãããã®å€ãçããå Žåã2ã€ã®æ°å€ã¯å³å¯ã«çãããªããŸãã2ã€ã®ç¹æ®ãªã±ãŒã¹ããããŸãã
- NaNã¯ãNaNãå«ããäœã«ãçãããããŸãã
- æ£ãšè² ã®ãŒãã¯äºãã«çãã
- ããŒã«å€ã¯ãäž¡æ¹ãtrueãŸãã¯falseã®å Žåãã€ãŸããå³å¯ã«çãããªããŸããæ£ãããééã£ãŠããã
- 2ã€ã®ãªããžã§ã¯ããåããªããžã§ã¯ãïŒã¡ã¢ãªã®å ŽæïŒãåç §ããŠããå Žåããããã¯å³å¯ã«çããã§ãã
- null === undefinedã¯falseãè¿ããnull == undefinedã¯trueãè¿ããŸã
ããã€ãã®äŸïŒ
0 == false // true
0 === false // false
1 == "1" // true
1 === "1" // false
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false
[] == [] //
[] === [] // false,
{} == {} //
{} === {} // false,
JSR
MDN
10.ã©ã ã颿°ãŸãã¯ç¢å°é¢æ°ãšã¯äœã§ããïŒ
ç¢å°é¢æ°ã¯ã颿°åŒãèšè¿°ããç°¡åãªæ¹æ³ã§ãã圌ãã¯ç¬èªã®thisãargumentsãsuperãnew.targetãæã£ãŠããŸããããããã®é¢æ°ã¯ãã¡ãœãããæããªããã³ã³ã¹ãã©ã¯ã¿ãŒãšããŠäœ¿çšã§ããªã颿°ã®åªããä»£æ¿ææ®µãšããŠæ©èœããŸãã
function regularSum (x, y) {
return x + y
}
const arrowSum = (x, y) => x + y
JSR
MDN
11.颿°ããã¡ãŒã¹ãã¯ã©ã¹ãªããžã§ã¯ããšåŒã°ããã®ã¯ãªãã§ããïŒ
JavaScriptã§ã¯ã颿°ã¯ãã¡ãŒã¹ãã¯ã©ã¹ã®ãªããžã§ã¯ãã§ããããã¯ã颿°ãéåžžã®å€æ°ã®ããã«äœ¿çšã§ããããšãæå³ããŸãã
ããšãã°ã颿°ãåŒæ°ãšããŠå¥ã®é¢æ°ã«æž¡ããå¥ã®é¢æ°ããå€ãšããŠè¿ãã倿°ã«å²ãåœãŠãããšãã§ããŸããæ¬¡ã®äŸã§ã¯ããã³ãã©ãŒã«é¢æ°ãå²ãåœãŠãŸãã
const handler = () => console.log(' - ')
document.addEventListener('click', handler)
JSR
MDN
12.äžæ¬¡é¢æ°ãšã¯äœã§ããïŒ
äžæ¬¡é¢æ°ã¯ãå¥ã®é¢æ°ãåŒæ°ãšããŠåãåããã颿°ãå€ãšããŠè¿ããªã颿°ã§ãã
const firstOrder = () => console.log(' - ')
JSR
MDN
13.髿¬¡é¢æ°ãšã¯äœã§ããïŒ
髿¬¡é¢æ°ã¯ãå¥ã®é¢æ°ãåŒæ°ãšããŠåãåãããå¥ã®é¢æ°ãå€ãšããŠè¿ã颿°ã§ãã
const firstOrderFun = () => console.log(' - ')
const higherOrder = returnFirstOrderFun => returnFirstOrderFun()
higherOrder(firstOrderFunc)
JSR
MDN
14. unary颿°ãšã¯äœã§ããïŒ
unary颿°ïŒmonad颿°ïŒã¯ã次ã®1ã€ã®åŒæ°ã®ã¿ãåã颿°ã§ãã
const unaryFun = a => console.log(a + 10) // 10
JSR
MDN
15.ã«ã¬ãŒãšã¯äœã§ããïŒ
ã«ã¬ãŒã¯ãè€æ°ã®ãã©ã¡ãŒã¿ãŒãæã€é¢æ°ã1ã€ã®ãã©ã¡ãŒã¿ãŒãæã€è€æ°ã®é¢æ°ã«å€æããããã»ã¹ã§ãããã®ããã»ã¹ã¯ãæ°åŠè HaskellCurryã«ã¡ãªãã§åä»ããããŸãããã«ã¬ãŒã¯ã1ã€ã®n-ary颿°ãããã€ãã®unary颿°ã«å€æããŸãïŒé¢æ°ã®arityãæžãããŸãïŒïŒ
const sum = (a, b, c) => a + b + c
const currySum = a => b => c => a + b + c
currySum(1) // : b => c => 1 + b + c
currySum(1)(2) // : c => 3 + c
currySum(1)(2)(3) // 6
ã«ã¬ãŒã¯ãã³ãŒãã®åå©çšïŒéšå颿°ã¢ããªã±ãŒã·ã§ã³ïŒãæå¹ã«ãã颿°ã®æ§æãäœæããããã«äœ¿çšãããŸãã
JSR
16.çŽç²ãªé¢æ°ãšã¯äœã§ããïŒ
çŽç²ãªé¢æ°ã¯ãæ»ãå€ãæž¡ãããåŒæ°ã®ã¿ã«äŸåããå¯äœçšããªã颿°ã§ããç°¡åã«èšãã°ãnåã®åŒæ°ã䜿çšããŠé¢æ°ãnååŒã³åºãã颿°ãåžžã«åãå€ãè¿ãå Žåãããã¯ã¯ãªãŒã³ã§ãã
//
let numberArray = []
const impureAddNumber = number => numberArray.push(number)
//
const pureAddNumber = number => argNumberArray => argNumberArray.concat([number])
console.log(impureAddNumber(1)) // 1
console.log(numberArray) // [1]
console.log(pureAddNumber(2)(numberArray)) // [1, 2]
console.log(numberArray) // [1]
äžèšã®äŸã§ã¯ãpushïŒïŒã¡ãœãããæž¡ãããåŒæ°ã«äŸåããªãé åã®æ°ããé·ããè¿ããããimpureAddNumberã¯çŽç²ãªé¢æ°ã§ã¯ãããŸãããconcatïŒïŒã¡ãœããã¯å¯äœçšãªãã«2ã€ã®é åãé£çµããæ°ããé åãè¿ãããã2çªç®ã®é¢æ°ã¯çŽç²ã§ããçŽç²ãªé¢æ°ã¯ãŠããããã¹ãã«äžå¯æ¬ ã§ãããäŸåé¢ä¿ã®æ³šå ¥ã¯å¿ èŠãããŸãããå¯äœçšããªããããèŠçŽ éã®æ¥ç¶ã匱ããªããããã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãåäžããŸãããã®ååã®å ·äœåã®1ã€ã¯ãES6ã§å°å ¥ãããäžå€æ§ã®æŠå¿µã§ãããletãããconstãåªå ããŸãã
JSR
MDN
17.ãletãããŒã¯ãŒãã¯äœã«äœ¿çšãããŸããïŒ
ãletãããŒã¯ãŒãã¯ããããã¯ã¹ã³ãŒãã®ããŒã«ã«å€æ°ã宣èšããããã«äœ¿çšãããŸãããã®ãããªå€æ°ã®ç¯å²ã¯ãããã䜿çšããããããã¯ãæŒç®åããŸãã¯åŒã«ãã£ãŠå¶éãããŸãããvarãããŒã¯ãŒãã§å®£èšããã倿°ã«ã¯ãããããå®çŸ©ãããŠããã°ããŒãã«ã¹ã³ãŒããŸãã¯é¢æ°ã¹ã³ãŒãããããŸãã
let counter = 1
if (counter === 1) {
let counter = 2
console.log(counter) // 2
}
console.log(counter) // 1 ( counter, , )
JSR
MDN
18. letãšvarã®éãã¯äœã§ããïŒ
äž»ãªéãã¯æ¬¡ã®ãšããã§ãã
| var | ããŸããã |
|---|---|
| JavaScript以éã§å©çšå¯èœ | ES6ã§å°å ¥ |
| ã°ããŒãã«ãŸãã¯æ©èœã¹ã³ãŒããæã£ãŠãã | ãããã¯ã¹ã³ãŒã |
| 倿°ã¯ã¹ã³ãŒãã®å é ã«åŒãäžããããŸã | 倿°ãåŒãäžããããŸãããåæåãããŸããïŒå®£èšã®ã¿ãåŒãäžããããå€ã®å²ãåœãŠã¯è¡ãããŸããïŒ |
ããã€ãã®äŸïŒ
function userDetails(username) {
if (username) {
console.log(salary)
console.log(age)
let age = 30
var salary = 10000
}
console.log(salary) // 10000 ( )
console.log(age) // SyntaxError: "age" is not defined ( )
}
JSR
MDN-
MDN-var
19.ãªããletããšããèšèãããŒã¯ãŒãã«éžã°ããã®ã§ããïŒ
ã¯ãSchemeãBasicãªã©ã®åæã®ããã°ã©ãã³ã°èšèªã§äœ¿çšãããŠããæ°åŠæŒç®åã§ããçŸåšãletã¯å€ãã®ããã°ã©ãã³ã°èšèªã§äœ¿çšãããŠããããããã®åèªã¯ç¥èªãvarãïŒå€æ°ïŒã«æãè¿ãä»£æ¿ææ®µã§ãã
JSR
MDN
20.ã¹ã€ãããããã¯ã®å€æ°ããªãŒããŒã©ã€ãããã«ã¯ã©ãããã°ããã§ããïŒ
ã¹ã€ãããããã¯ã§ãletãããŒã¯ãŒãã§å®£èšããã倿°ããªãŒããŒã©ã€ãããããšãããšããšã©ãŒãçºçããŸãã
let counter = 1
switch(x) {
case 0:
let name
break
case 1:
let name // SyntaxError
break
}
ãã®åé¡ã解決ããã«ã¯ãã±ãŒã¹å ã«æ°ãããããã¯ãäœæããå¿ èŠããããŸã-æ°ããåå¥ã¹ã³ãŒãïŒ
let counter = 1
switch(x) {
case 0: {
let name
break
}
case 1: {
let name
break
}
}
JSR
MDN
21.äžæçãªããããŸãŒã³ãšã¯äœã§ããïŒ
ããŒã¯ãŒããletããŸãã¯ãconstãïŒãvarãã§ã¯ãªãïŒã§å®£èšããã倿°ã«ãå®çŸ©ãããåïŒã€ãŸããçŸåšã®ã¹ã³ãŒãå ã®å€ãå²ãåœãŠãããåïŒã«ã¢ã¯ã»ã¹ããããšãããšãReferenceErroräŸå€ãã¹ããŒãããŸãã ïŒãèšãæãããšãã¿ã€ã ããããŸãŒã³ã¯ã倿°ã®ã³ã³ããã¹ãïŒã¹ã³ãŒãïŒã®äœæãšãã®å®çŸ©ã®éã®æéã§ãã
function someMethod () {
console.log(counter1) // undefined
console.log(counter2) // ReferenceError
var counter1 = 1
const counter2 = 2
}
MDN
22.峿åŒã³åºã颿°åŒïŒIIFEïŒãšã¯äœã§ããïŒ
IIFEã¯ãå®çŸ©ã®çŽåŸã«åŒã³åºããã颿°ã§ãããã®ãããªé¢æ°ã®æ§æã¯æ¬¡ã®ããã«ãªããŸãïŒãªãã·ã§ã³ã®1ã€ã§ãæãäžè¬çã§ãïŒã
(function () {
//
})()
// ,
(() => {
//
})()
IIFEã䜿çšããäž»ãªçç±ã¯ãIIFEå ã§å®£èšããã倿°ã«å€éšç°å¢ããã¢ã¯ã»ã¹ã§ããªãããã倿°ããã©ã€ããŒãã«ä¿ã€ããšã§ãã
(function () {
var message = 'IIFE'
console.log(message)
})()
console.log(message) // SyntaxError: "message" is not defined
JSR
MDN
23.ã¢ãžã¥ãŒã«ã䜿çšããå©ç¹ã¯äœã§ããïŒ
ãšãããã以äžãèšåããããšãã§ããŸãïŒ
- èªã¿ãããã®åäžãšã³ãŒãã¡ã³ããã³ã¹ã®å®¹æå
- åå©çšå¯èœãªã³ãŒã
- ã°ããŒãã«ããŒã ã¹ããŒã¹ãã¯ãªãŒã³ã«ä¿ã€
JSR
MDN
24.æèšãŸãã¯æèšãšã¯äœã§ããïŒ
ã¡ã¢åã¯ã以åã«ååŸãã颿°ã®çµæããã£ãã·ã¥ã«ä¿åããããšã«ããã颿°ã®ããã©ãŒãã³ã¹ãåäžãããæ¹æ³ã§ãã颿°ãåŒã³åºããããã³ã«ã颿°ã«æž¡ãããåŒæ°ããã£ãã·ã¥ã€ã³ããã¯ã¹ã«ãªããŸããããŒã¿ããã£ãã·ã¥ã«ããå Žåã颿°ãåå®è¡ããã«è¿ãããŸãããã以å€ã®å Žåã颿°ãå®è¡ãããçµæããã£ãã·ã¥ã«æžã蟌ãŸããŸãã
const memoAdd = () => {
let cache = {}
return value => {
if (value in cache) {
console.log(' ')
return cache[value] // , cache.value , JavaScript .
} else {
console.log(' ')
let result = value + 20
cache[value] = result
return result
}
}
}
// memoAdd
const add = memoAdd()
console.log(add(20)) // 40
console.log(add(20)) // 40
25.å·»ãäžããšã¯äœã§ããïŒ
å·»ãäžãã¯ãã³ãŒããå®è¡ããåã«ã倿°ãšé¢æ°åŒãã¹ã³ãŒãã®å é ã«ç§»åããããã»ã¹ã§ããæ³šæïŒåæåã§ã¯ãªãã倿°ãšåŒèªäœã®ã¿ãåŒãäžããããŸãïŒã€ãŸãã倿°å®£èšã¯åŒãäžããããå€ã®å²ãåœãŠã¯è¡ãããŸããïŒïŒ
console.log(message) // undefined
var message = '!'
ã€ã³ã¿ããªã¿ã®å Žåããã®ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
var message
console.log(message)
message = '!'
JSR
MDN
26.ã¯ã©ã¹ãšã¯äœã§ããïŒ
ES6ã§å°å ¥ãããã¯ã©ã¹ã¯ããããã¿ã€ãç¶æ¿ïŒã³ã³ã¹ãã©ã¯ã¿ãŒé¢æ°ãããã¿ã€ãçšïŒã®æ§æã·ã¥ã¬ãŒïŒã©ãããŒãæœè±¡åããŸãã¯ã¢ããªã³ïŒã§ããã³ã³ã¹ãã©ã¯ã¿ãŒé¢æ°ã®äŸïŒ
function Bike(model, color) {
this.model = model
this.color = color
}
Bike.prototype.getDetails = function () {
return ' ' + this.model + ' ' + this.color + ' .'
}
ã¯ã©ã¹ã䜿çšããåãäŸïŒ
class Bike {
constructor (color, model) {
this.color = color
this.model = model
}
getDetails () {
return \` ${this.model} ${this.color} .\`
}
}
JSR
MDN
27.ééãšã¯äœã§ããïŒ
ã¯ããŒãžã£ãŒã¯ã颿°ãšãã®åå¥ç°å¢ã®çµã¿åããã§ããç°¡åã«èšããšãã¯ããŒãžã£ãšã¯ãå éšé¢æ°ãå€éšé¢æ°ã§å®£èšããã倿°ã«ã¢ã¯ã»ã¹ã§ããå Žåã§ããã¯ããŒãžã£ãŒã«ã¯ã次ã®3ã€ã®ã¹ã³ãŒãã®ãã§ãŒã³ããããŸãã
- ç¬èªã®ã¹ã³ãŒã
- å€éšæ©èœã¹ã³ãŒã
- ã°ããŒãã«ã¹ã³ãŒã
const welcome = name => {
const greet = message => {
console.log(\`${message}, ${name}!\`)
}
return greet
}
const fun = welcome('')
fun('') // , !
JSR
MDN
28.ã¢ãžã¥ãŒã«ãšã¯äœã§ããïŒ
ã¢ãžã¥ãŒã«ã¯ãå€ãã®èšèšãã¿ãŒã³ã®æ ¹åºã«ãããç¬ç«ããåå©çšå¯èœãªã³ãŒãã®å°ããªæçã§ããã»ãšãã©ã®ã¢ãžã¥ãŒã«ã¯ããªããžã§ã¯ãã颿°ããŸãã¯ã³ã³ã¹ãã©ã¯ã¿ãŒãšããŠãšã¯ã¹ããŒããããŸãã
JSR
MDN
29.ã¹ã³ãŒããšã¯äœã§ããïŒ
ã¹ã³ãŒãã¯ãå®è¡äžã®ã³ãŒãå ã®ããŸããŸãªå Žæã§ã®å€æ°ã颿°ãããã³ãªããžã§ã¯ãã®å¯çšæ§ãå®çŸ©ããŸããèšãæãããšãã¹ã³ãŒãã¯ãã³ãŒãå®è¡ã®çŸåšã®ã³ã³ããã¹ãã«ããã倿°ããã³ãã®ä»ã®ãªãœãŒã¹ã®å¯èŠæ§ã§ãã
MDN
30.ãµãŒãã¹ã¯ãŒã«ãŒãšã¯äœã§ããïŒ
Service Workerã¯ãå®è¡ããWebããŒãžããŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãšã¯ç¬ç«ããŠå®è¡ãããã¹ã¯ãªããã§ããå®éãService Workerã¯ãã¢ããªã±ãŒã·ã§ã³ãšãã©ãŠã¶ã®éã®ãããã·ãµãŒããŒãšããŠæ©èœããŸããService Workerã®äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ããã¢ããªã±ãŒã·ã§ã³ããªãã©ã€ã³ã§ããããšã®ç¢ºèªã宿çãªããã¯ã°ã©ãŠã³ãåæãããã·ã¥éç¥ããããã¯ãŒã¯ãªã¯ãšã¹ãã®ååãšåŠçãããã³ããã°ã©ã ã«ãããã£ãã·ã¥ã®ç®¡çã
MDN
31. Service Workerã䜿çšããŠããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«ïŒDOMïŒãšã©ã®ããã«ããåãããŸããïŒ
ãµãŒãã¹ã¯ãŒã«ãŒã¯ãDOMã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸããããã ããpostMessageã€ã³ã¿ãŒãã§ã€ã¹ãä»ããŠããŒãžãšå¯Ÿè©±ã§ããããŒãžã¯DOMã倿Žã§ããŸãã
MDN-ServiceWorkerMDN
-postMessage
32. Service Workerãåèµ·åãããšãã«æ å ±ãåå©çšããã«ã¯ã©ãããã°ããã§ããïŒ
ãµãŒãã¹ã¯ãŒã«ãŒã®åé¡ã®1ã€ã¯ã䜿çšããŠããªããšãã«å®è¡ã忢ããå¿ èŠã«å¿ããŠåèµ·åããããšã§ããããã«ããããã§ããããã³ã¡ãã»ãŒãžã€ãã³ããã³ãã©ãŒãã°ããŒãã«ã«è¿œå ã§ããªããªããŸããæ å ±ãåå©çšããã«ã¯ããµãŒãã¹ã¯ãŒã«ãŒãã€ã³ããã¯ã¹ä»ãããŒã¿ããŒã¹ïŒIndexedDBïŒãŸãã¯ããŒã«ã«ã¹ãã¬ãŒãžïŒããŒã«ã«ã¹ãã¬ãŒãžïŒãšå¯Ÿè©±ããããã«ããå¿ èŠããããŸãã
MDN
33.ã€ã³ããã¯ã¹ä»ãããŒã¿ããŒã¹ïŒIndexedDBïŒãšã¯äœã§ããïŒ
IndexedDBã¯ããã¡ã€ã«ãblobãªã©ã®å€§éã®æ§é åããŒã¿ãã¯ã©ã€ã¢ã³ãåŽã«æ ŒçŽããããã®äœã¬ãã«APIã§ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã€ã³ããã¯ã¹ã䜿çšããŠããŒã¿ååŸã®é床ãåäžãããŸãã
JSR
MDN
34. Webã¹ãã¬ãŒãžãšã¯äœã§ããïŒ
Webã¹ãã¬ãŒãžã¯ãããŒã¿ãããŒãšå€ã®ãã¢ãšããŠããŒã«ã«ã«ä¿åã§ããããã«ããã€ã³ã¿ãŒãã§ã€ã¹ã§ãããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã§ãCookieã䜿çšããããã䟿å©ãªæ¹æ³ã§ãWebã¹ãã¬ãŒãžã¯ã次ã®2ã€ã®ã¹ãã¬ãŒãžã¡ã«ããºã ãæäŸããŸãã
- ããŒã«ã«ã¹ãã¬ãŒãžïŒããŒã«ã«ã¹ãã¬ãŒãžïŒ-çŸåšã®ãŠãŒã¶ãŒã®ããŒã¿ãç¡å¶éã«ä¿åããŸã
- ã»ãã·ã§ã³ã¹ãã¬ãŒãž-çŸåšã®ã»ãã·ã§ã³å šäœã§ããŒã¿ãä¿åããŸãããã©ãŠã¶ã¿ããéãããšãããŒã¿ã倱ãããŸã
JSR
MDN
35. postMessageãšã¯äœã§ããïŒ
postMessageã¯ããŠã£ã³ããŠãªããžã§ã¯ãã®ããŸããŸãªãœãŒã¹ïŒããšãã°ãããŒãžãšãããçæãããããã¢ããïŒãããã¢ãããŠã£ã³ããŠïŒããŸãã¯ããŒãžãšåã蟌ã¿iframeïŒã®éã§éä¿¡ããæ¹æ³ã§ããéåžžãããããŒãžã®ã¹ã¯ãªããã¯ããã®ããŒãžãå ±éãªãªãžã³ãŸãã¯åäžãœãŒã¹ããªã·ãŒïŒãœãŒã¹-ãããã³ã«ããã¹ããããã³ããŒãïŒã«åŸã£ãŠããå Žåãå¥ã®ããŒãžã«ã¢ã¯ã»ã¹ã§ããŸããã
MDN-postMessage
36.ã¯ãããŒãšã¯äœã§ããïŒ
Cookieã¯ãåŸã§ãã©ãŠã¶ã§äœ¿çšããããã«ãŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ã«ä¿åãããå°ããªããŒã¿ã§ããCookieã¯ãããŒãšå€ã®ãã¢ãšããŠä¿åãããŸãã
document.cookie = 'username='
JSR
MDN
37.ãªãCookieãå¿ èŠãªã®ã§ããïŒ
Cookieã¯ããŠãŒã¶ãŒã«é¢ããæ å ±ãä¿åããããã«äœ¿çšãããŸãïŒæ©å¯æ å ±ã®ä¿åã«ã¯ãå§ãããŸããïŒãéåžžããã®ããã»ã¹ã¯2ã€ã®æ®µéã§æ§æãããŸãã
- ãã®ããŒãžã«æåã«ã¢ã¯ã»ã¹ãããšããŠãŒã¶ãŒãããã¡ã€ã«ãCookieã«ä¿åãããŸãã
- ããŒãžã«å床ã¢ã¯ã»ã¹ãããšããŠãŒã¶ãŒãããã¡ã€ã«ãCookieããååŸãããŸã
JSR
MDN
38. Cookieã®æ©èœã¯äœã§ããïŒ
ããã©ã«ãã§ã¯ããã©ãŠã¶ãéãããšCookieãåé€ãããŸãããããã¯UTCã§æå¹æéãèšå®ããããšã§å€æŽã§ããŸãã
document.cookie = 'username=; expires=Sat, 5 Sep 2020 12:00:00 UTC'
ããã©ã«ãã§ã¯ãCookieã¯çŸåšã®ããŒãžã«å±ããŸããããã¹ãèšå®ããããšã§å€æŽããããšãã§ããŸãã
document.cookie = 'username=; path=/services'
JSR
MDN
39. Cookieãåé€ããã«ã¯ã©ãããã°ããã§ããïŒ
çµéæéãã©ã€ãã¿ã€ã ãšããŠèšå®ããããšã§ãCookieãåé€ã§ããŸãããã®å ŽåãCookieå€ãå®çŸ©ããå¿ èŠã¯ãããŸããã
document.cookie = 'username=; expires=Sat, 05 Jun 2020 00:00:00 UTC; path=/;'
ãã®å Žåãæ£ããCookieãåé€ããããã®ãã¹ã決å®ããå¿ èŠãããããšã«æ³šæããŠãã ãããäžéšã®ãã©ãŠã¶ã§ã¯ããã®ãã©ã¡ãŒã¿ãæå®ããã«Cookieãåé€ããããšã¯ã§ããŸããã
JSR
MDN
40. CookieãããŒã«ã«ã¹ãã¬ãŒãžãã»ãã·ã§ã³ã¹ãã¬ãŒãžã®éãã¯äœã§ããïŒ
äž»ãªéãã¯æ¬¡ã®ãšããã§ãã
| åºæº | ã¯ãã㌠| ããŒã«ã«ã¹ãã¬ãŒãž | ã»ãã·ã§ã³ã¹ãã¬ãŒãž |
|---|---|---|---|
| å¯çšæ§ | ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ | ã¯ã©ã€ã¢ã³ãã®ã¿ | ã¯ã©ã€ã¢ã³ãã®ã¿ |
| äžç | æå¹æéä»ãã§ã€ã³ã¹ããŒã« | ãŠãŒã¶ãŒãåé€ãããŸã§ | ãã©ãŠã¶ã¿ããéãããŸã§ |
| æå·åã®ãµããŒã | ãµããŒããããŠããŸã | ãµããŒããããŠããŸãã | ãµããŒããããŠããŸãã |
| æå€§ããŒã¿ãµã€ãº | 4 Kb | çŽ5MBïŒãã©ãŠã¶ã«ããïŒ | çŽ5MBïŒãã©ãŠã¶ã«ããïŒ |
JSR-Cookies
MDN-Cookie
JSR-LocalStorageãSessionStotageMDN
-Webã¹ãã¬ãŒãž
41.ããŒã«ã«ã¹ãã¬ãŒãžãšã»ãã·ã§ã³ã¹ãã¬ãŒãžã®äž»ãªéãã¯äœã§ããïŒ
ããŒã«ã«ã¹ãã¬ãŒãžã¯ã»ãã·ã§ã³ã¹ãã¬ãŒãžãšåãã§ãããæåã¯ãã©ãŠã¶ãéããŠåèµ·åããŠãããŒã¿ãä¿åããã2çªç®ã¯ã»ãã·ã§ã³ã®çµäºæã«ããŒã¿ãåé€ãããïŒ[ãã©ãŠã¶]ã¿ããéããïŒç¹ãç°ãªããŸãã
JSR
MDN
42. Webã¹ãã¬ãŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ã©ãããã°ããã§ããïŒ
windowãªããžã§ã¯ãã¯ãlocalStorageããããã£ãšsessionStorageããããã£ãããããæã€WindowLocalStorageãªããžã§ã¯ããšWindowSessionStorageãªããžã§ã¯ããæäŸããŸãããããã®ããããã£ã¯ãç¹å®ã®ãã¡ã€ã³ããã³ã¹ãã¬ãŒãžã¿ã€ãïŒã»ãã·ã§ã³ãŸãã¯ããŒã«ã«ïŒã®ããŒã¿ãæžã蟌ã¿ãååŸãããã³åé€ã§ããStorageãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
//
localStorage.setItem('data', document.querySelector('.data').value)
//
localStorage.getItem('data')
JSR
MDN
43.ã»ãã·ã§ã³ã¹ãã¬ãŒãžã«ã¯ã©ã®ãããªæ¹æ³ããããŸããïŒ
ã»ãã·ã§ã³ã¹ãã¬ãŒãžã¯ãããŒã¿ã®èªã¿åããæžã蟌ã¿ãããã³åé€ã®æ¹æ³ãæäŸããŸãã
//
sessionStorage.setItem('key', 'value')
//
const data = sessionStorage.getItem('key')
//
sessionStorage.removeItem('key')
//
sessionStorage.clear()
JSR
MDN
44. Webã¹ãã¬ãŒãžãæäœãããšãã©ã®ãããªã€ãã³ããçºçããŸããïŒ
å¥ã®ããã¥ã¡ã³ãã®ã³ã³ããã¹ãã§ã¹ãã¬ãŒãžã倿Žããããšãã¹ãã¬ãŒãžã€ãã³ããçºçããŸãã
window.onstorage = function () {}
ãã®ã€ãã³ãã®åŠçäŸïŒ
window.onstorage = event => {
console.log(\`${event.key} .
: ${event.oldValue}.
: ${event.newValue}.\`)
}
ãã®ã€ãã³ãã§ã¯ãäžçš®ã®ãã£ãããå®è£ ã§ããŸãã
JSR
MDN
45. Webã¹ãã¬ãŒãžã¯äœã«äœ¿çšãããŸããïŒ
Webã¹ãã¬ãŒãžã¯ããå®å šã§ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããšãªããCookieãããå€ãã®ããŒã¿ãä¿åã§ããŸããããã«ãããŒã¿ã¯ãµãŒããŒã«éä¿¡ãããŸããïŒCookieã®å Žåãã¯ã©ã€ã¢ã³ãããµãŒããŒã«ã¢ã¯ã»ã¹ãããã³ã«ãããŒã¿ã¯èŠæ±ããããŒãšå¿çããããŒã«å«ãŸããŸãïŒããããã£ãŠãããŒã¿ãä¿åãããã®æ¹æ³ã¯ãCookieãããé©ããŠããŸãã
JSR
MDN
46.ãã©ãŠã¶ãWebã¹ãã¬ãŒãžããµããŒãããŠãããã©ããã確èªããã«ã¯ã©ãããã°ããã§ããïŒ
Webã¹ãã¬ãŒãžã䜿çšããåã«ããã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ãã©ãŠã¶ãŒãµããŒãã確èªããããšããå§ãããŸãã
if (typeof(Storage) !== 'undefined') {
//
} else {
// -
}
//
if ('Storage' in window) {
console.log('ok')
} else {
console.warn(' ok')
}
CanIUseã« ãããšã仿¥ã®Webã¹ãã¬ãŒãžãµããŒãã¯98ïŒ ã§ãã
JSR
MDN
47.ãã©ãŠã¶ããµãŒãã¹ã¯ãŒã«ãŒããµããŒãããŠãããã©ããã確èªããã«ã¯ã©ãããã°ããã§ããïŒ
Service Workerã䜿çšããåã«ããã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ãã©ãŠã¶ãµããŒãã確èªããããšããå§ãããŸãã
if (typeof(Worker) !== undefined) {
//
} else {
// -
}
//
if ('Worker' in window) {
console.log('ok')
} else {
console.warn(' ok')
}
CanIUseã« ãããšããµãŒãã¹ã¯ãŒã«ãŒã®ãµããŒãã¯çŸåš94ïŒ ã§ãã
MDN
48.Webã¯ãŒã«ãŒã®äŸãæããŠãã ãã
Webã¯ãŒã«ãŒã䜿çšããã«ã¯ã次ã®ããšãè¡ãå¿ èŠããããŸãã
ã¯ãŒã«ãŒçšã®ãã¡ã€ã«ãäœæããŸãïŒäŸïŒget-current-time.jsïŒã
const getCurrentTime = () => {
let time = new Date().toLocaleTimeString()
postMessage(time)
setTimeout(() => getCurrentTime(), 1000)
}
getCurrentTime()
postMessageïŒïŒã¡ãœããã¯ãããŒãžã«ã¡ãã»ãŒãžãéä¿¡ããããã«äœ¿çšãããŸãã
ã¯ãŒã«ãŒãªããžã§ã¯ããäœæããŸãã
const worker = new Worker('get-current-time.js')
ãã®åŸãã¯ãŒã«ãŒããã®ã¡ãã»ãŒãžã®åä¿¡ãåŠçããŸãã
<output></output>
<button></button>
worker
.addEventListener('message', event => document.querySelector('output')
.textContent = event.data)
ã¯ãŒã«ãŒã¯ãå€éšã¹ã¯ãªãããäœæ¥ãå®äºããåŸãã¡ãã»ãŒãžã€ãã³ããåŠçãç¶ããããã匷å¶çã«åæ¢ããå¿ èŠããããŸãã
document.querySelector('button')
.addEventListener('click', () => worker.terminate())
ã¯ãŒã«ãŒãæªå®çŸ©ã«èšå®ãããšã次ã®ããã«åå©çšã§ããŸãã
worker = undefined
MDN
49.DOMãæäœããããã®Webã¯ãŒã«ãŒã®å¶éã¯äœã§ãã
Webã¯ãŒã«ãŒã¯å¥ã®ãã¡ã€ã«ã§äœæããããããæ¬¡ã®ãªããžã§ã¯ãã«ã¢ã¯ã»ã¹ã§ããŸããã
- çª
- è³æ
- 芪ãªããžã§ã¯ã-ã¯ãŒã«ãŒãéå§ãããªããžã§ã¯ã
MDN
50.çŽæãšã¯äœã§ããïŒ
promiseïŒéä¿¡ïŒã¯ãäœããã®å€ã§å®è¡ããããããšã©ãŒã§æåŠããããªããžã§ã¯ãã§ããçŽæã¯ãç¹å®ã®æéãçµéããåŸããŸãã¯ç¹å®ã®ã€ãã³ããçºçããåŸã«è§£æ±ºãããŸããçŽæã«ã¯ãä¿çäžãå±¥è¡æžã¿ãæåŠã®3ã€ã®ç¶æ ã®ããããããããŸãã
çŽæã®æ§æïŒ
const promise = new Promise((resolve, reject) => {
//
})
// , ,
const promise = Promise.resolve(value)
promise.then(value => {
//
})
promiseã®äœ¿çšäŸïŒ
const promise = new Promise(resolve => {
const timer = setTimeout(() => {
resolve(' !')
clearTimeout(timer)
}, 5000);
}, reject => {
reject('- ')
})
promise
.then(value => console.log(value))
.catch(error => console.error(error))
.finally(() => console.log(' ')) // " !" 5 " "
ãããã¹è§£æ±ºã¢ã«ãŽãªãºã ïŒ
JSR
MDN
51.ãªãçŽæãå¿ èŠãªã®ã§ããïŒ
Promiseã¯ãéåæã³ãŒããæäœããããã«äœ¿çšãããŸãããããã¯ã³ãŒã«ããã¯é¢æ°ã®ä»£æ¿ã§ããããããããã³ãŒã«ããã¯å°çããåé¿ããã³ãŒããããã¯ãªãŒã³ã§èªã¿ãããããŸãã
JSR
MDN
52.çŽæã®3ã€ã®å¯èœãªç¶æ ãæããŠãã ãã
çŽæã«ã¯3ã€ã®ç¶æ ããããŸãã
- ä¿çäžïŒæäœãéå§ããåã®æ®µé
- å®è¡æžã¿ïŒæäœã¯æ£åžžã«å®äºããŸãã
- æåŠïŒæäœã¯å€±æããŸãããäŸå€ãã¹ããŒãããŸã
JSR
MDN
53.ã³ãŒã«ããã¯é¢æ°ãšã¯äœã§ããïŒ
ã³ãŒã«ããã¯ã¯ãåŒæ°ãšããŠå¥ã®é¢æ°ã«æž¡ããã颿°ã§ãããã®é¢æ°ïŒå éšïŒã¯ãç¹å®ã®ã€ãã³ããçºçãããšãã«æäœãå®è¡ããããã«ã芪ïŒå€éšïŒå ã§åŒã³åºãããŸããç°¡åãªäŸãèŠãŠã¿ãŸãããã
function callback(name) {
alert(\`, ${name}!\`)
}
function outer(cb) {
const name = prompt(', ')
cb(name)
}
outer(callback)
äžèšã®äŸã§ã¯ãå€éšé¢æ°ã¯ãŠãŒã¶ãŒã®ååãèŠæ±ãããããname倿°ã«æ ŒçŽããŸããæ¬¡ã«ããã®é¢æ°ã¯ååãã³ãŒã«ããã¯é¢æ°ã«æž¡ããŸããã³ãŒã«ããã¯é¢æ°ã¯ããŠãŒã¶ãŒã®ååã§æšæ¶ãåºåããŸãã
JSR
MDN
54.ãªãã³ãŒã«ããã¯ãå¿ èŠãªã®ã§ããïŒ
JavaScriptã¯ã€ãã³ãé§ååèšèªã§ãããããã³ãŒã«ããã¯ãå¿ èŠã§ããããã¯ãããšãã°ããªã¯ãšã¹ããžã®å¿çãç¹å®ã®ã€ãã³ãã®åŠçãåŸ ã€ä»£ããã«ãJavaScriptãä»ã®ã€ãã³ãã«å¿çãç¶ããããšãæå³ããŸãã1ã€ã®é¢æ°ãã€ã³ã¿ãŒãã§ã€ã¹ã«ã¢ã¯ã»ã¹ãããã1ã€ã®é¢æ°ãã³ã³ãœãŒã«ã«ã¡ãã»ãŒãžãåºåããäŸãèããŠã¿ãŸãã
function first () {
// API
setTimeout(() => console.log(' '), 1000)
}
function second () {
console.log(' ')
}
first()
second()
// " ", " "
ã芧ã®ãšãããJavaScriptã¯æåã®é¢æ°ãå®äºããã®ãåŸ ããã«ãã³ãŒããå®è¡ãç¶ããŸãããããã£ãŠãã³ãŒã«ããã¯ã¯éåæãã·ãã¥ã¬ãŒãããããã«äœ¿çšãããã¡ã€ã³ããã°ã©ã ã¹ã¬ããã®ãããã¯ãé²ããŸãã
JSR
MDN
55.ã³ãŒã«ããã¯å°çãšã¯äœã§ããïŒ
ã³ãŒã«ããã¯å°çã¯ãéåæããžãã¯ãå®è£ ããããã«è€æ°ã®ã³ãŒã«ããã¯é¢æ°ãçžäºã«ãã¹ããããã¢ã³ããã¿ãŒã³ã§ãããã®ã³ãŒãæ§é ãçè§£ããŠç¶æããããšã¯å°é£ã§ããæ¬¡ã®ããã«ãªããŸãã
function first () {
return function second () {
return function third () {
return function fourth () {
// ..
}
}
}
}
ã³ãŒãã£ã³ã°ãžã®ãã®ã¢ãããŒãã¯ãã«ã¬ãŒãéšåçãªé©çšããŸãã¯æ©èœã®æ§æã®å Žåãé€ããŠãæªãç¿æ £ãšèŠãªãããŸãã
JSR
MDN
56.ãµãŒããŒéä¿¡ã€ãã³ãïŒSSEïŒãšã¯äœã§ããïŒ
ãµãŒããŒéä¿¡ã€ãã³ãã¯ããã©ãŠã¶ãŒãèŠæ±ãéä¿¡ããã«HTTPæ¥ç¶ãä»ããŠãµãŒããŒããæŽæ°ãããããŒã¿ãåä¿¡ã§ããããã«ããããã·ã¥éç¥ãã¯ãããžãŒã§ããããã¯ãã¡ãã»ãŒãžããµãŒããŒã«ãã£ãŠã®ã¿éä¿¡ãããå Žåã®ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®éä¿¡æ¹æ³ã®1ã€ã§ãããã®ãã¯ãããžãŒã¯ãFacebook / Twitterãã¹ãã¢äŸ¡æ Œããã¥ãŒã¹ãã£ãŒããªã©ãæŽæ°ããããã«äœ¿çšãããŸãã
JSR
MDN
57.ãµãŒããŒããéä¿¡ãããã¡ãã»ãŒãžïŒéç¥ãŸãã¯ã€ãã³ãïŒãåä¿¡ããã«ã¯ã©ãããã°ããã§ããïŒ
EventSourceãªããžã§ã¯ãã¯ããã«äœ¿çšãããŸãïŒ
if('EventSource' in window) {
const source = new EventSource('sse.js')
source.addEventListener('message', event => document.querySelector('output')
.textContent = event.data)
}
JSR
MDN
58. SSEã®ãã©ãŠã¶ãµããŒãã確èªããã«ã¯ã©ãããã°ããã§ããïŒ
ããã¯æ¬¡ã®ããã«è¡ãããŸãã
if (typeof EventSource !== 'undefined') {
//
} else {
// SSE
}
//
('EventSource' in window)
? console.log('ok')
: console.warn('! ok')
CanIUseã« ãããšãçŸåšããã©ãŠã¶ã®95ïŒ ãSSEã§ãµããŒããããŠããŸãã
JSR
MDN
59. SSEã䜿çšãããšãã©ã®ãããªã€ãã³ããçºçããŸããïŒ
ãããã®ã€ãã³ãã®ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
| ã€ãã³ã | 説æ |
|---|---|
| éãã | ãµãŒããŒãžã®æ¥ç¶ãéããããšãã«çºçããŸã |
| ã¡ãã»ãŒãž | ãµãŒããŒããã¡ãã»ãŒãžãåä¿¡ãããšãã«çºçããŸã |
| ãšã©ãŒ | äŸå€ãã¹ããŒããããšãã«ã¹ããŒãããŸã |
JSR
MDN
60.ãããã¹ãæ±ãããã®åºæ¬çãªã«ãŒã«ã¯äœã§ããïŒ
promiseãæäœããããã®åºæ¬çãªã«ãŒã«ã¯æ¬¡ã®ãšããã§ãã
- promiseã¯ãçµã¿èŸŒã¿ãŸãã¯æšæºã®thenïŒïŒã¡ãœãããå«ããªããžã§ã¯ãã§ãã
- çŽæãåŸ ã€æ®µéã¯ãéåžžããã®å±¥è¡ãŸãã¯æåŠã®æ®µéã§çµäºããŸã
- å±¥è¡ãŸãã¯æåŠãããçŽæã®ã¹ããŒã¿ã¹ã¯ã解決ãããåŸã¯å€æŽããªãã§ãã ãã
- çŽæã解決ããåŸããã®å€ã倿Žãããã¹ãã§ã¯ãããŸããã
JSR
MDN
61.ã³ãŒã«ããã¯ã®ã³ãŒã«ããã¯ãšã¯äœã§ããïŒ
ç¹å®ã®æäœãé çªã«å®è¡ããããã«ãã³ãŒã«ããã¯ãçžäºã«ãã¹ãã§ããŸãã
loadScript('/script1.js', script => {
console.log(\` ${script} \`)
loadScript('/script2.js', script => {
console.log(\` ${script} \`)
loadScript('/script3.js', script => {
console.log(\` ${script} \`)
})
})
})
JSR
MDN
62.ãããã¹ãã§ãŒã³ãšã¯äœã§ããïŒ
promiseã䜿çšããè€æ°ã®éåæã¿ã¹ã¯ã®é 次å®è¡ã¯ãpromiseãã§ãŒã³ãšåŒã°ããŸããäŸãèããŠã¿ãŸãããïŒ
new Promise((resolve, reject) => {
const id = setTimeout(() => {
resolve(1)
clearTimeout(id)
}, 1000)
}).then(result => {
console.log(result) // 1
return result * 2
}).then(result2 => {
console.log(result2) // 2
return result2 * 3
}).then(result3 => {
console.log(result3) // 6
}).catch(error => console.error(error))
å®è¡ã¢ã«ãŽãªãºã ïŒ
- æåã®promiseã¯å€1ã§è§£æ±ºãããŸã
- ãã®åŸãæåã®thenïŒïŒã¡ãœããã¯ãã®å€ãã³ã³ãœãŒã«ã«åºåãã2ãæããå€ãè¿ããŸãã
- 2çªç®ã®thenïŒïŒã¯ãæåã®thenïŒïŒã®çµæãã³ã³ãœãŒã«ïŒ2ïŒã«åºåãã3ãæããçµæãè¿ããŸãã
- æåŸã®thenïŒïŒã¯ã2çªç®ã®thenïŒïŒã®çµæãã³ã³ãœãŒã«ïŒ6ïŒã«åºåããŸãã
- ãã£ãããããã¯ã¯ãšã©ãŒãåŠçããããã«äœ¿çšãããŸã
JSR
MDN
63. Promise.allïŒïŒãšã¯äœã§ããïŒ
Promise.allïŒïŒã¯ãä»ã®promiseã®é åãåŒæ°ãšããŠåãåããå®è¡ãããpromiseã®çµæããŸãã¯1ã€ãæåŠãããå Žåã¯ãšã©ãŒãè¿ãPromiseã§ããæ§æïŒ
Promise.all([Promise1, Promise2, Promise3])
.then(results => console.log(results))
.catch(error => console.error(error))
çµæãçºçããé åºã¯ãã¢ã¬ã€å ã®Promiseã®é åºã«ãã£ãŠç°ãªãããšã«æ³šæããŠãã ããã
JSR
MDN
64. Promise.raceïŒïŒãšã¯äœã§ããïŒ
Promise.raceïŒïŒã¯ãæåã«å®è¡ãŸãã¯æåŠããããããã¹ã®çµæããããã¹ã®é åãšããŠè¿ããŸãã
const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 500, ''))
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, ''))
Promise.race([promise1, promise2]).then(value => console.log(value)) // ""
JSR
MDN
65.峿 Œãªäœå¶ãšã¯äœã§ããïŒ
strictã¢ãŒããæå¹ã«ããã«ã¯ããã¹ãŠã®ã³ãŒããŸãã¯åã ã®é¢æ°ã®å é ã§ãusestrictãïŒãŸãã¯ãusestrictãïŒã¹ããŒãã¡ã³ãã䜿çšããŸããå³å¯ã¢ãŒãã¯ES5ã§å°å ¥ãããŸããããã®ã¢ãŒãã§ã¯ãäžéšã®ã¢ã¯ã·ã§ã³ãçŠæ¢ãããããã«å€ãã®äŸå€ãã¹ããŒãããŸãã
JSR
MDN
66.ãªã峿 Œãªäœå¶ãå¿ èŠãªã®ã§ããïŒ
å³å¯ã¢ãŒãã§ã¯ãå€ãã®ãšã©ãŒã®çºçãé²ãããšã§ãããå®å šãªã³ãŒããèšè¿°ã§ããŸããããšãã°ãã°ããŒãã«å€æ°ã®å¶çºçãªäœæïŒããŒã¯ãŒããªããvariable = valueïŒãèªã¿åãå°çšããããã£ãžã®å€ã®å²ãåœãŠãã²ãã¿ãŒã䜿çšããŠã®ã¿ååŸã§ããããããã£ãååšããªãããããã£ãããã³ååšããªã倿°ãŸãã¯ãªããžã§ã¯ããçŠæ¢ããŸããéå³å¯ã¢ãŒãã§ã¯ãããããã¹ãŠã®å Žåã«äŸå€ã¯ã¹ããŒãããŸããã
JSR
MDN
67.å³å¯ãªã»ãã¥ãªãã£ãæå¹ã«ããã«ã¯ã©ãããã°ããã§ããïŒ
å³å¯ã¢ãŒãã¯ãã³ãŒããŸãã¯é¢æ°ã®å é ã«ãããusestrictãïŒãŸãã¯ãusestrictãïŒã¹ããŒãã¡ã³ãã«ãã£ãŠæå¹ã«ãªããŸããéåžžããã®åœä»€ã¯ã¹ã¯ãªããã®æåã«ç€ºãããŸããã°ããŒãã«åååïŒ
'use strict'
x = 3.14 // ReferenceError: "x" is not defined
颿°ã§ãusestrictããæå®ãããŠããå Žåãstrictã¢ãŒãã¯ãã®é¢æ°ã«ã®ã¿é©çšãããŸãã
x = 3.14 //
f() // ReferenceError: "y" is not defined
function f () {
'use strict'
y = 3.14
}
JSR
MDN
68.äºéåŠå®ã¯äœã«äœ¿çšãããŸããïŒ
äºéåŠå®ïŒ!!ïŒã¯ãå€ãããŒã«å€ã«å€æããŸããå€ãfalseã®å Žåãfalseãè¿ãããŸãããã以å€ã®å Žåã-trueïŒ
const x = 1
console.log(x) // 1
console.log(!!x) // true
const y = ''
console.log(y) // ''
console.log(!!str) // false
泚æïŒïŒïŒïŒåå¥ã®æŒç®åã§ã¯ãªãã2ã€ã®æŒç®åã§ãïŒ..
MDN
JSR
69.å逿Œç®åã¯äœã«äœ¿çšãããŸããïŒ
ãã®æŒç®åã¯ããªããžã§ã¯ãã®ããããã£ãšãããã®ããããã£ã®å€ãåé€ããããã«äœ¿çšãããŸãïŒ
'use strict'
const user = {
name: '',
age: 30
}
delete user.age
console.log(user) // { name: "" }
delete user // SyntaxError: Delete of an unqualified identifier in strict mode
éå³å¯ã¢ãŒãã§ã¯ããªããžã§ã¯ããåé€ããããšãããšãµã€ã¬ã³ãã«å€±æããããšã«æ³šæããŠãã ããã
é åããªããžã§ã¯ãã§ãããããé åã®èŠçŽ ã«deleteãé©çšãããšããã®å€ãåé€ãããæªå®çŸ©ãæžã蟌ãŸããŸããé åã®åé€ãããèŠçŽ ã®ã€ã³ããã¯ã¹ã¯ä¿æãããé åã®é·ãã¯å€æŽãããŸããã
JSR
MDN
70.䜿çšãããæŒç®åã®ã¿ã€ãã¯äœã§ããïŒ
ãã®æŒç®åã¯ã倿°ãŸãã¯åŒã®ã¿ã€ããå®çŸ©ããããã«äœ¿çšãããŸãã
typeof 1 // number
typeof [] // object
typeof '' // string
typeof (1 + 2) // number
typeof null // object
typeof NaN // number
JSR
MDN
71.æªå®çŸ©ãšã¯äœã§ããïŒ
undefinedã¯ãå€ãå²ãåœãŠãããŠããªã倿°ã®æªå®çŸ©ïŒãã ãæ¬ èœããŠããªãïŒæšæºå€ïŒããã©ã«ãå€ïŒãããã³å®£èšãããŠããªã倿°ã§ããããã¯ãããªããã£ãããŒã¿ã¿ã€ãã®1ã€ã§ãã
let name
console.log(typeof name) // undefined
console.log(typeof age) // undefined
ãã®å€ã¯ã倿°ã«æç€ºçã«å²ãåœãŠãããšãã§ããŸãã
user = undefined
JSR
MDN
72. nullãšã¯äœã§ããïŒ
nullã¯ãæç€ºçã«èšå®ãããå€ããªãããšã衚ãå€ã§ããããã¯ãããªããã£ãããŒã¿ã¿ã€ãã®1ã€ã§ããnullã䜿çšãããšã倿°ã®å€ãåé€ã§ããŸãã
const user = null
console.log(typeof user) // object
JSR
MDN
73. nullãšundefinedã®éãã¯äœã§ããïŒ
äž»ãªéãã¯æ¬¡ã®ãšããã§ãã
| ãã« | æªå®çŸ© |
|---|---|
| 䟡å€ã®ãªãææšãšããŠå²ãåœãŠããã | å€ãå²ãåœãŠãããŠããªã倿°ãŸãã¯å®£èšãããŠããªã倿°ã®ããã©ã«ãã§ã |
| ã¿ã€ã-ãªããžã§ã¯ã | ã¿ã€ã-æªå®çŸ© |
| nullãå€ãªãããŸãã¯åç §ãªããæå³ããããªããã£ãã¿ã€ã | 倿°ã«å€ãå²ãåœãŠãããŠããªãããšãæå³ããããªããã£ãå |
| 倿°å€ããªãããšã瀺ããŸã | 倿°ããªããããã®ãããŸããã瀺ããŸã |
JSR-æªå®çŸ©
JSR-
nullMDN-æªå®çŸ©
MDN-null
74.è©äŸ¡ãšã¯äœã§ããïŒ
evalïŒïŒé¢æ°ã¯ãæž¡ãããæååãè©äŸ¡ããŸããæååã¯ãåŒã倿°ã1ã€ä»¥äžã®æŒç®åã«ããããšãã§ããŸãã
console.log(eval('1 + 2')) // 3
//
const curryCalc = x => operator => y =>
new Promise((resolve, reject) =>
resolve(eval(\`x${operator}y\`))
).then(
result => console.log(result),
error => console.error(' !')
)
curryCalc(1)('+')(2) // 3
curryCalc(4)('-')(3) // 1
curryCalc(5)('x')(6) // !
䜿çšã¯ãå§ãããŸããã
JSR
MDN
75.ãã©ãŠã¶ã®å±¥æŽã«ã¢ã¯ã»ã¹ããã«ã¯ã©ãããã°ããã§ããïŒ
ãã©ãŠã¶ã®ããŒãžéã®ç§»åã®å±¥æŽã«é¢ããæ å ±ã«ã¯ããŠã£ã³ããŠãªããžã§ã¯ãã®historyããããã£ãå«ãŸããŠããŸããåãŸãã¯æ¬¡ã®ããŒãžã«ç§»åããã«ã¯ãbackïŒïŒãnextïŒïŒããŸãã¯goïŒïŒã¡ãœããã䜿çšããŸãã
const goBack = () => {
history.back()
//
history.go(-1)
}
const goForward = () => history.forward()
MDN
76. JavaScriptã«ã¯ã©ã®ãããªããŒã¿ã¿ã€ãããããŸããïŒ
JavaScriptã«ã¯äž»ã«8ã€ã®ã¿ã€ãããããŸãã
- ä»»æã®æ°ã®çªå·ïŒæŽæ°ãŸãã¯æµ®åå°æ°ç¹ãæŽæ°å€ã±2ã«éå®ãããŠãã53
- ä»»æã®é·ãã®æŽæ°ã®bigint
- æååã®æååãæååã«ã¯1ã€ä»¥äžã®æåãå«ããããšãã§ããåå¥ã®æåã¿ã€ãã¯ãããŸãã
- true / falseã®ããŒã«å€
- äžæãªå€ã®å Žåã¯null-åäžã®nullå€ãæã€åå¥ã®ã¿ã€ã
- å²ãåœãŠãããŠããªãå€ã®å Žåã¯æªå®çŸ©-1ã€ã®æªå®çŸ©ã®å€ãæã€å¥ã®ã¿ã€ã
- ããè€éãªããŒã¿æ§é ã®ãªããžã§ã¯ã
- äžæã®èå¥åã®èšå·
JSR
MDN
77. isNaNïŒïŒã¯äœãããŸããïŒ
isNaNïŒïŒé¢æ°ã¯ãå€ãæ°å€ã«å€æãããããNaNã§ãããã©ããã確èªããŸãã
isNaN('hello') // true
isNaN(100) // false
ãã®æ©èœã®ããå ç¢ãªããŒãžã§ã³ã¯ãES6ã§å°å ¥ãããNumber.isNaNïŒïŒã¡ãœããã§ãã
JSR
MDN
78.æªå®£èšã®å€æ°ãšæªå®çŸ©ã®å€æ°ã®éãã¯äœã§ããïŒ
äž»ãªéãã¯æ¬¡ã®ãšããã§ãã
| 宣èšãããŠããªã | æªå®çŸ© |
|---|---|
| ããã°ã©ã ã«ååšããªã | å€ãå²ãåœãŠãããã«å®£èšãããŠãã |
| ã¢ã¯ã»ã¹è©Šè¡ã¯ãšã©ãŒã§çµäºããŸã | ã¢ã¯ã»ã¹ããããšãããšãæªå®çŸ©ãè¿ãããŸã |
| çŸåšã®ã¹ã³ãŒãã®å é ã«ç»ãïŒãããŒãããïŒ | ãŸããäžæããŸãããå²ãåœãŠãããå€ã¯ãããŸãããå€ãæªå®çŸ©ã®å ŽåïŒå®£èšã®ã¿ãåŒãäžããããåæåã¯è¡ãããŸããïŒ |
JSR
MDN
79.ã°ããŒãã«å€æ°ãšã¯äœã§ããïŒ
ãã©ãŠã¶ã§ã¯ããvarãããŒã¯ãŒãã䜿çšããŠããŸãã¯ããŒã¯ãŒãã䜿çšããã«ïŒlaxã¢ãŒãã§ïŒå®£èšãããã°ããŒãã«é¢æ°ãšå€æ°ããã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ãã®ããããã£ã«ãªããŸãïŒã¢ãžã¥ãŒã«ã§ã¯æ©èœããŸããïŒããã®ãããªå€æ°ã«ã¯ãããã°ã©ã ã®ã©ãããã§ãã¢ã¯ã»ã¹ã§ããŸããã°ããŒãã«å€æ°ã®äœ¿çšã¯ãå§ãããŸãããã°ããŒãã«å€æ°ãäœæããå¿ èŠãããå Žåã¯ãæç€ºçã«äœæããããšããå§ãããŸãã
window.currentUser = {
name: ''
}
//
globalThis.currentUser = {
name: ''
}
console.log(currentUser.name) //
JSR
80.ã°ããŒãã«å€æ°ã®äœæã«ã¯ã©ã®ãããªåé¡ã䌎ããŸããïŒ
ã°ããŒãã«å€æ°ãäœæãããšãã°ããŒãã«ããŒã ã¹ããŒã¹ãæ±æããã倿°åéã®ç«¶åãçºçããå¯èœæ§ããããŸãããŸããã³ãŒãã®ãããã°ãšãã¹ããé£ãããªããŸãã
JSR
81. NaNãšã¯äœã§ããïŒ
ã°ããŒãã«NaNããããã£ã¯Not-a-Numberå€ã§ããããæ£ç¢ºã«ã¯ãNaNã¯å€ãæ£ãããªãããšã瀺ããŸãããããã§ãæ°å€ã§ãããããã£ãŠãtypeofNaNã¯æ°å€ãè¿ããŸãã
parseInt('bla') // NaN
Math.sqrt(-1) // NaN
MDN
82. isFiniteïŒïŒã¯äœãããŸããïŒ
ã°ããŒãã«é¢æ°isFiniteïŒïŒã¯ãåŒæ°ãæ°å€ã«å€æãããããéåžžã®ïŒæéã®ïŒæ°å€ã§ããå Žåãã€ãŸãtrueãè¿ããŸããNaNãInfinityïŒæ£ã®ç¡é倧ïŒã-InfinityïŒè² ã®ç¡é倧ïŒã§ã¯ãããŸããããã以å€ã®å Žåã¯ãfalseãè¿ãããŸãã
isFinite(Infinity) // false
isFinite(-Infinity) // false
isFinite(NaN) // false
isFinite(100) // true
Number.isFiniteïŒïŒã¡ãœããããããŸããããã¯ãisFiniteïŒïŒãšã¯ç°ãªãããã§ãã¯ããåã«åŒæ°ãæ°å€ã«å€æããŸããã
MDN
JSR
83.ã€ãã³ããããŒ/äŒæãšã¯äœã§ããïŒ
ã€ãã³ãã®ãããŒïŒã€ãã³ãäŒæïŒã¯ãããŒãžäžã§ã€ãã³ããçºçããé åºã§ããä»ã®èŠçŽ å ã«ãã¹ããããèŠçŽ ãã¯ãªãã¯ãããšãã€ãã³ããã¿ãŒã²ããèŠçŽ ã«å°éããåã«ãã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ãããå§ããŠããã®ãã¹ãŠã®ç¥å ãé çªã«ééããŸããã€ãã³ãäŒæã«ã¯3ã€ã®æ®µéããããŸãã
- äžããäžãž-ãã£ããã£ãŸãã¯ãã€ãã³ã°ã¹ããŒãž
- ã¿ãŒã²ããã¹ããŒãž
- ããã ã¢ãã-äžæãŸãã¯äžæã®æ®µéïŒå€æ°ã®äžæãšæ··åããªãã§ãã ãã-å·»ãäžãïŒ
JSR
84.ã€ãã³ããããªã³ã°ãšã¯äœã§ããïŒ
ãããªã³ã°ã¯ãã€ãã³ããæåã«ã¿ãŒã²ããèŠçŽ ã«ç»é²ãããæ¬¡ã«ãã®èŠçŽ ã®ç¥å ããæäžäœïŒå€åŽïŒã®èŠçŽ ïŒã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ãïŒãŸã§ã®ãã§ãŒã³ãäžããã€ãã³ãã®äŒæã®æ®µéã§ãã
JSR
85.ã€ããŒãžã§ã³ãŸãã¯ã€ãã³ããã£ããã£ãšã¯äœã§ããïŒ
ã€ããŒãžã§ã³ã¯ãã€ãã³ããæåã«æäžäœïŒå€åŽïŒã®èŠçŽ ïŒã°ããŒãã«ãŠã£ã³ããŠãªããžã§ã¯ãïŒã«ç»é²ãããæ¬¡ã«ç¥å ã®ãã§ãŒã³ãäžã£ãŠã¿ãŒã²ããèŠçŽ ã«äžãã£ããšãã«çºçããæ®µéã§ãã
JSR
86.åŠçã®ããã«ãã©ãŒã ãéä¿¡ããã«ã¯ã©ãããã°ããã§ããïŒ
ããã¯ããŸããŸãªæ¹æ³ã§å®è¡ã§ããŸãã
function submitForm() {
document.forms[0].submit()
}
form.onsubmit = function(event) {
event.preventDefault()
//
}
form.addEventListener('submit', event => {
event.preventDefault()
//
})
ãã©ãŒã ã®ãã¿ã³ã¯ããã©ã«ãã§éä¿¡ãããŸãããã©ãŒã ãéä¿¡ããã®ã«åœ¹ç«ã¡ãŸãã
JSR
MDN
87.ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«é¢ããæ å ±ãååŸããã«ã¯ã©ãããã°ããã§ããïŒ
ãã®æ å ±ã¯ãã°ããŒãã«ããã²ãŒã¿ãŒãªããžã§ã¯ãã«å«ãŸããŠããŸãããã®æ å ±ã®äžéšã¯ããã©ãããã©ãŒã ããããã£ããååŸã§ããŸãã
console.log(navigator.platform)
MDN
88. DOMContentLoadedã€ãã³ããšloadã€ãã³ãã®éãã¯äœã§ããïŒ
DOMContentLoadedã€ãã³ãã¯ãã¹ã¿ã€ã«ã·ãŒããç»åããŸãã¯ãã¬ãŒã ãå®å šã«èªã¿èŸŒãŸããã®ãåŸ ããã«ãå ã®HTMLããã¥ã¡ã³ããå®å šã«èªã¿èŸŒãŸããè§£æããããšãã«çºçããŸããloadã€ãã³ãã¯ã远å ã®ãªãœãŒã¹ãå«ããããŒãžãå®å šã«èªã¿èŸŒãŸããåŸã«çºçããŸãã
JSR
MDN-DOMContentLoadedMDN-
ããŒã
89.ãã€ãã£ãããã¹ãïŒã³ãŒãã©ã³ã¿ã€ã ãææïŒãããã³ã«ã¹ã¿ã ãªããžã§ã¯ãã®éãã¯äœã§ããïŒ
ãã€ãã£ããªããžã§ã¯ãã¯èšèªã®äžéšã§ãããECMAScript仿§ã§å®çŸ©ãããŠããŸãããã®ãããªãªããžã§ã¯ãã¯ãããšãã°ãNumberãStringãFunctionãObjectãMathãRegExpãDateãªã©ã§ãããã¹ããªããžã§ã¯ãã¯ããã©ãŠã¶ãŸãã¯Node.jsãªã©ã®å¥ã®ã©ã³ã¿ã€ã ã«ãã£ãŠæäŸãããŸãããã®ãããªãªããžã§ã¯ãã¯ãããšãã°ããŠã£ã³ããŠãããã¥ã¡ã³ãïŒDOMïŒãXMLHttpRequestãWeb APIïŒåŒã³åºãã¹ã¿ãã¯ãã¿ã¹ã¯ãã¥ãŒïŒãªã©ã§ãããŠãŒã¶ãŒãªããžã§ã¯ãã¯ãã³ãŒãã§äœæããããªããžã§ã¯ããããšãã°ãªããžã§ã¯ãã§ãããŠãŒã¶ãŒã«é¢ããæ å ±ãå«ãïŒ
const user = {
name: '',
age: 30
}
JSR
MDN
90.ã³ãŒããå»¶æããããã«äœ¿çšãããããŒã«ã¯äœã§ããïŒ
ãã®ãããªææ®µã¯æ¬¡ã®ãšããã§ãã
- ChromeDevToolsãªã©ã®ãã©ãŠã¶å éçºè ããŒã«
- ãããã¬ãŒåŒ
- å€ãè¯ãconsole.logïŒïŒ
JSR
MDN -ãããã¬
MDN -ã³ã³ãœãŒã«
91.ãããã¹ãšã³ãŒã«ããã¯ã®é·æãšçæã¯äœã§ããïŒ
å©ç¹ïŒ
- ã³ãŒã«ããã¯ã®å°çãé²ã
- thenïŒïŒã䜿çšããŠéåæã³ãŒããé æ¬¡å®è¡ã§ããŸã
- Promise.allïŒïŒã䜿çšããŠéåæã³ãŒãã䞊è¡ããŠå®è¡ã§ããããã«ãã
- å€ãã®ã³ãŒã«ããã¯ã®åé¡ã解決ããŸãïŒåŒã³åºããé ããããæ©ãããã1ã€ã§ã¯ãªãè€æ°ã®åŒã³åºãããšã©ãŒã®é衚瀺ïŒ
çæ
- ã³ãŒãã®èšè¿°ãé£ãããªã
- å€ããã©ãŠã¶ã®ãµããŒããæäŸããã«ã¯ãããªãã£ã«ãå¿ èŠã§ãïŒçŸåšããã®ãããªãã©ãŠã¶ã¯ã»ãšãã©æ®ã£ãŠããŸããïŒ
JSR-çŽæ
JSR-ã³ãŒã«ããã¯
MDN-çŽæ
MDN-ã³ãŒã«ããã¯
92.屿§ãšèŠçŽ ããããã£ã®éãã¯äœã§ããïŒ
ãã©ãŠã¶ãããŒãžãããŒããããšãHTMLãè§£æãããããããDOMãªããžã§ã¯ããçæãããŸããèŠçŽ ããŒãã®å Žåãã»ãšãã©ã®æšæºHTML屿§ã¯èªåçã«DOMãªããžã§ã¯ãã®ããããã£ã«ãªããŸããããããèŠçŽ ã®å±æ§ã¯ããŒã¯ã¢ããã§æå®ããããã®ããããã£ã¯DOMã«ãããŸããããšãã°ãid = "page"屿§ãæã€bodyã¿ã°ã®å ŽåãDOMãªããžã§ã¯ãã«ã¯body.id = "page"ããããã£ããããŸãã
<input type="text" value=" !">
// : type value
const input = document.querySelector('input')
//
console.log(input.getAttribute('value'))
//
console.log(input.value)
//
input.setAttribute('value', ' !')
//
input.value = ' !'
ECMAScript仿§ã§ã¯ããªããžã§ã¯ãããããã£ã®å±æ§ïŒ[[Value]]ã[[Writable]]ã[[Enumerable]]ãããã³[[Configurable]]ïŒãå®çŸ©ãããŠããããšã«æ³šæããŠãã ããã
JSR
93.åãèµ·æºã®ããªã·ãŒïŒSOPïŒãšã¯äœã§ããïŒ
å ±æãªãªãžã³ïŒåããœãŒã¹ïŒããªã·ãŒã¯ãå¥ã®ãœãŒã¹ããã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ããããã¯ããŸãããœãŒã¹ã¯ããããã³ã«ããã¹ããããã³ããŒãã®çµã¿åããã§ããããã©ã«ãã§ã¯ãã¯ãã¹ãªãªãžã³ãªãœãŒã¹å ±æïŒCORSïŒã¯çŠæ¢ãããŠããŸããããŒã¿ã¯ãããŒã¿ãé 眮ãããŠããã®ãšåããœãŒã¹ããã®èŠæ±ã«å¿çããŠã®ã¿æäŸãããŸãããã®åäœã¯ãç¹å¥ãªHTTPããããŒã䜿çšããŠå€æŽã§ããŸãã
JSR
MDN-SOP
MDN-CORS
94. void 0ã¯äœãããŸããïŒ
voidæŒç®åã¯ãæž¡ãããåŒãè©äŸ¡ããundefinedãè¿ããŸããéåžžããªã³ã¯ãã¯ãªãã¯ãããšããã©ãŠã¶ã¯æ°ããããŒãžãããŒãããããçŸåšã®ããŒãžããªããŒãããŸãããvoidïŒ0ïŒããšããåŒã䜿çšãããšããããåé¿ã§ããŸãã
<a href="javascript:void(0)" onclick="alert('!')"> !
</a>
ããŒãžã®åèªã¿èŸŒã¿ã¯ãåçŽãªã¹ã¿ãã§é²ãããšãã§ããŸãã
<a href="#"> </a>
// "#" URL
MDN
95. JavaScriptã¯ã³ã³ãã€ã«ãŸãã¯è§£éãããããã°ã©ãã³ã°èšèªã§ããïŒ
JavaScriptèªäœã¯è§£éãããããã°ã©ãã³ã°èšèªã§ãããšã³ãžã³ã¯ã³ãŒããè§£æããåè¡ãè§£éããŠå®è¡ããŸãããã ããæè¿ã®ãã©ãŠã¶ã¯ãå®è¡åã«ã³ãŒããã³ã³ãã€ã«ïŒæé©åïŒããããžã£ã¹ãã€ã³ã¿ã€ã ïŒJITã³ã³ãã€ã«ïŒãšåŒã°ãããã¯ãããžã䜿çšããŠããŸããããã«ãããã³ãŒãå®è¡ã®æºåæéãé·ããªããŸãããå®è¡èªäœãå€§å¹ ã«é«éåãããŸããããšãã°ãChromeãšNode.jsã§äœ¿çšããããšã³ãžã³ã§ããV8ã¯ãIgnitionã€ã³ã¿ãŒããªã¿ãŒã䜿çšããŠã³ãŒããè§£æããTurboFanã³ã³ãã€ã©ãŒã䜿çšããŠã³ãŒããæé©åããŸãã
JSR
MDN
96. JavaScriptã¯å€§æåãšå°æåãåºå¥ããŸããïŒ
ã¯ããJavaScriptã¯å€§æåãšå°æåãåºå¥ããŸãããããã£ãŠãããŒã¯ãŒãã倿°ã®ååã颿°ãããã³ãªããžã§ã¯ãã¯ããããã䜿çšãããšãã«åäžã§ããå¿ èŠããããŸããããšãã°ãconstsomenameãšconstsomeNameã¯ç°ãªã倿°ãtypeofïŒ1ïŒã¯æ°å€ãtypeOf 1ã¯ReferenceErrorïŒtypeOfã¯å®çŸ©ãããŠããŸããã
JSR
MDN
97. JavaãšJavaScriptã¯é¢é£ããŠããŸããïŒ
ãããã2ã€ã®ç°ãªãããã°ã©ãã³ã°èšèªã§ãããã ããã©ã¡ãããªããžã§ã¯ãæåã®èšèªã«å±ããŠãããä»ã®å€ãã®èšèªãšåæ§ã«ãåæ§ã®æ§æã䜿çšããŸãïŒifãelseãforãswitchãbreakãcontinueãªã©ïŒãåºæ¬çã«ãJavaããJavaScriptã¯ããŒã±ãã£ã³ã°ã®çç¥ã§ãã
JSR
MDN
98.ã€ãã³ããšã¯äœã§ããïŒ
ã€ãã³ãã¯ãç¹å®ã®ã¢ã¯ã·ã§ã³ã«å¯Ÿãããã©ãŠã¶ã®åå¿ã§ãããã®ã¢ã¯ã·ã§ã³ã¯ããã¿ã³ã®ã¯ãªãã¯ãããã¹ãã®å ¥åãããŒãžã®èªã¿èŸŒã¿ããªã¯ãšã¹ããžã®å¿çã®åä¿¡ãªã©ã®ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã«ããããšãã§ããŸããïŒã€ãã³ããããªã¬ãŒããã¢ã¯ã·ã§ã³ã¯ãå¿ ããããŠãŒã¶ãŒåºæã§ã¯ãããŸããïŒãã€ãã³ãã¯ãããã«åŠçããããã«ãã°ã«èšé²ãããŸãã
button.onclick = () => alert('!')
input.addEventListener('change', function() {
p.textContent = this.value
})
window.onload = () => console.log(' ')
MDN
JSR
99. JavaScriptãçºæããã®ã¯èª°ã§ããïŒ
ããŠã³ããŒãJavaScriptã§äœæããããã¬ã³ãã³ã»ã¢ã€ã¯ãããã¹ã±ãŒãã»ã³ãã¥ãã±ãŒã·ã§ã³ãºã§åœŒã®æéã®éã«ããã®èšèªã¯å ã MochaãšåŒã°ããŠããŸããããLiveScriptã«ååã倿Žãããã¯ã©ã€ã¢ã³ãåŽã®ããã°ã©ãã³ã°ãšãµãŒããŒåŽã®ããã°ã©ãã³ã°ïŒLiveWireãšåŒã°ããã¹ãïŒã®äž¡æ¹ã察象ãšããŠããŸããã
JSR
MDN