100の理論的なJavaScriptの質問





良い䞀日、友達



これは、このリポゞトリからの䞊䜍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



All Articles