Lihat soalan temuduga hadapan ini untuk membantu anda menguasai mata pengetahuan frekuensi tinggi (6)

青灯夜游
Lepaskan: 2023-02-24 19:19:37
ke hadapan
1823 orang telah melayarinya

Lihat soalan temuduga hadapan ini untuk membantu anda menguasai mata pengetahuan frekuensi tinggi (6)

10 soalan setiap hari Selepas 100 hari, anda akan menguasai semua mata pengetahuan frekuensi tinggi temuduga hadapan. ! ! , semasa membaca artikel itu, saya harap anda tidak melihat jawapan secara langsung, tetapi fikirkan dahulu sama ada anda mengetahuinya, dan jika ya, apakah jawapan anda? Fikirkan tentangnya dan kemudian bandingkan dengan jawapannya Adakah lebih baik, jika anda mempunyai jawapan yang lebih baik daripada saya, sila tinggalkan mesej di kawasan komen dan bincangkan keindahan teknologi bersama-sama.

Penemuduga: Bolehkah anda terangkan secara ringkas perbezaan antara var, let dan const?

Saya: Uh~, okay, perbezaan antara tiga fungsi diringkaskan seperti berikut:

var: yang paling biasa pembolehubah yang digunakan; pengisytiharan berulang dibenarkan, tetapi data akan ditimpa promosi pembolehubah tempatan dipasang pada objek global, yang akan menyebabkan pencemaran objek global.

console.log(a) // 因变量提升, var a;提到前面但是没有赋值,所以值为undefined
var a = 1
var a = '你好' // var声明的变量会被重新赋值
console.log(a) // a会打印被重新赋值的值
console.log(window.a) // var声明的局部变量会被挂载到全局变量上,造成全局变量的污染。
Salin selepas log masuk

biar: perintah baharu es6, penggunaan adalah serupa dengan var pengisytiharan berulang tidak dibenarkan; skop peringkat blok Elakkan pencemaran pembolehubah global yang disebabkan oleh pembolehubah tempatan.

let a=10;
console.log(a) // 不存在变量提升,所以值为:10
console.log(window.a) // 不会造成全局污染,所以值为 undefined
for(let i =0;i<3;i++){ // 会生成块级作用域,i 的值只能在块级作用域中使用
    console.log(i)
}
console.log(i) // 因为拿不到块级作用域中的值,所以报错。
Salin selepas log masuk

const: perintah baharu es6, digunakan untuk mengisytiharkan pemalar dan nilai tidak boleh diubah suai pemalar yang diisytiharkan mesti dimulakan serta-merta, jika tidak, ralat akan dilaporkan dalam tugasan kemudian; tidak boleh Mengulangi pengisytiharan itu; >Penemu bual: Sila bincangkan tentang pemahaman anda tentang salinan mendalam dan salinan cetek

const arr = [&#39;小张&#39;,&#39;小王&#39;,&#39;小李&#39;,&#39;小赵&#39;]
arr[0]=&#39;小明&#39;
console.log(arr) // [&#39;小明&#39;, &#39;小王&#39;, &#39;小李&#39;, &#39;小赵&#39;]
const arr = [] // 报错
Salin selepas log masuk

Saya: Eh~, okay, pemahaman kedua-duanya diringkaskan seperti berikut:

Salinan dalam

: Data baharu berinteraksi dengan data asal tidak mengganggu. Sudah tentu, terdapat juga cara standard untuk menulis salinan dalam, seperti berikut:

// 扩展运算符在一维数组中是属于深拷贝,在多维数组中属于浅拷贝
let arr = [1,2,3]
let newArr = [...arr]
newArr.push(4)
console.log(arr,newArr) // [1, 2, 3],[1, 2, 3, 4]

// 深拷贝用法
let list = [
    {id:1,name:&#39;张三&#39;,age:18},
    {id:2,name:&#39;李四&#39;,age:28},
    {id:3,name:&#39;王五&#39;,age:38},
]
let newList = JSON.parse(JSON.stringify(list))
newList.pop()
console.log(list.length,newList.length) // 3 2
Salin selepas log masuk

Salinan cetek
// 标准的深拷贝 => 引用数据类型(数组,对象)
function deepClone(source){
    const targetObj = source.constructor === Array ? [] : {}
    for(let keys in source){
        if(source.hasOwnProperty(keys)){
            // 引用数据类型
            if(source[keys] && typeof source[keys] === 'object'){
                targetObj[keys] = source[keys].constructor === Array ? [] : {}
                // 递归
                targetObj[keys] = deepClone(source[keys])
            }else{
                // 基本数据类型,直接赋值
                targetObj[keys] = source[keys]
            }
        }
    }
    return targetObj
}

let obj = {
    name:'张三',
    age:18,
    hobby:['抽烟','喝酒','烫头'],
    action:{
        am:'敲代码',
        pm:'睡觉'
    }
}
let newObj = deepClone(obj)
newObj.name = '李四'
console.log(obj.name,newObj.name)// 张三 李四
Salin selepas log masuk

: Data baharu akan menjejaskan data asal. Secara terang-terangan, salinan mendalam adalah untuk mendapatkan data baharu, yang tiada kaitan dengan data asal walaupun salinan cetek boleh mendapatkan data baharu, ia masih berbeza daripada data asal .

let arr = [1,2,3]
let newArr = arr
// 对新数据做出改变,原数据也会发生改变,这种就叫做浅拷贝
newArr.push(4) // [1, 2, 3, 4]
console.log(arr,newArr) // [1, 2, 3, 4]
Salin selepas log masuk
Penemuduga: Apakah yang dilakukan oleh penyemak imbas sebaik sahaja anda memasukkan URL?

Saya: Uh~, URL terdiri daripada bahagian berikut

: https: Protokol pengangkutan (antara http dan tcp Ditambahkan a lapisan keselamatan TSL atau SSL) www: pelayan

baidu.com: nama domain

Sistem nama domain DNS akan sepadan dengan IP sebenar, lawatan pertama Biasanya, lawatan kedua akan menyimpan IP yang diselesaikan oleh nama domain secara tempatan dan menggunakannya untuk membaca cache penyemak imbas.

Saat saya memasukkan URL yang saya alami: Nama domain -> Sistem Nama Domain DNS -> , render halaman -> Lambai empat kali

Proses pelaksanaan khusus

:1 sama ada untuk mencari kandungan atau meminta URL

  • 2. Cari cache setempat: jika ada cache, kembalikan terus ke halaman peringkat permintaan rangkaian

  • 3 resolusi DNS

  • 4. Wujudkan sambungan TCP melalui jabat tangan tiga hala

  • 5. Sintesiskan maklumat pengepala permintaan dan hantar permintaan http

  • 6 Proses maklumat respons

  • 7 dengan melambai empat kali

  • 8 Jika kod status respons ialah 301, maka Ubah hala

  • 9. Penyemak imbas memaparkan halaman: 1) menghuraikan html dan menjana pepohon DOM; 2) mengira gaya nod mengikut css dan menjana lembaran gaya; 3) menjana pepohon reka letak; Beritahu saya tentang perbezaan antara cookie sessionStorage dan localStorage?

  • Saya: Uh~, okay, hubungan antara mereka adalah seperti berikut:

Mata yang sama

:

Semuanya adalah storan penyemak imbas, dan semuanya disimpan secara setempat dalam penyemak imbas.

Perbezaan:

1 Kuki ditulis oleh pelayan atau bahagian hadapan, sessionStorage dan localStorage adalah kedua-duanya ditulis oleh hujung hadapan Masukkan

2 Kitaran hayat kuki ditetapkan apabila pelayan menulisnya akan sentiasa wujud selagi ia ditulis, melainkan ia dikosongkan secara manual . SessionStorage dikosongkan secara automatik apabila halaman ditutup

  • 3 Ruang storan kuki adalah kira-kira 4kb, dan ruang sessionStorage dan localStorage agak besar, kira-kira 5J

    .

  • 4.3 Semua perkongsian data mengikut prinsip asal yang sama, dan sessionStorage juga dihadkan pada halaman yang sama

  • 5 Apabila bahagian hadapan menghantar permintaan kepada bahagian belakang, Automatically carry cookies, session and local do not carry

  • 6. Cookies secara amnya menyimpan maklumat pengesahan log masuk atau token LocalStorage sering digunakan untuk menyimpan data yang tidak mudah diubah dan mengurangkan tekanan pelayan. SessionStorage boleh digunakan Pantau sama ada pengguna menyegarkan untuk memasuki halaman, seperti fungsi bar kemajuan pemulihan pemain muzik

Penemuduga: Apakah jenis data JS dan apakah adakah perbezaannya?

Saya: Eh~, jenis data JS terbahagi kepada dua kategori: satu jenis data asas, satu lagi jenis data rujukan, seperti berikut:

  • Jenis asas: rentetan, nombor, boolean, null, undefined, simbol, bigInt

  • Jenis rujukan: objek, tatasusunan

Jenis asas disimpan dalam tindanan, dengan ruang yang kecil dan operasi yang kerap

Jenis rujukan disimpan dalam timbunan, dengan ruang yang besar , dan disimpan dalam Penunjuk tindanan menunjuk ke alamat permulaan dalam timbunan

Nota : Simbol adalah unik dan tidak boleh dikira untuk mendapatkan

Penemubual: Beritahu saya tentang pemahaman anda tentang penutupan?

Saya: Eh~, fungsi dalam merujuk kepada pembolehubah dalam fungsi luar, dan set pembolehubah ini ialah penutupan.

  • Prinsip pembentukan: Rantaian skop, skop semasa boleh mengakses pembolehubah dalam skop unggul.

  • Masalah diselesaikan : Ia boleh menghalang pembolehubah dalam skop fungsi daripada dimusnahkan selepas pelaksanaan fungsi tamat, dan ia juga boleh digunakan dalam fungsi Pembolehubah tempatan di dalam fungsi boleh diakses dari luar. Masalah yang disebabkan oleh

  • : Kerana pemungut sampah tidak akan memusnahkan pembolehubah dalam penutupan, kebocoran memori berlaku jika kebocoran terkumpul terlalu banyak, ia akan mudah menyebabkan limpahan ingatan.

  • Aplikasi penutupan boleh meniru skop peringkat blok, boleh melaksanakan kari dan mentakrifkan kaedah istimewa dalam pembina, dsb. digunakan dalam Pemerhati responsif data dalam Vue.

Penemuduga: Berapa banyak kaedah yang JavaScript ada untuk menentukan jenis pembolehubah?

Saya: Uh~, okay, ringkasannya adalah seperti berikut:

1 jenis (berdasarkan pertimbangan binari), jenis data tidak boleh dinilai: batal dan objek

2 . intanceof (dinilai berdasarkan rantaian prototaip), jenis data asli tidak boleh dinilai

3 constructor.name (dinilai berdasarkan pembina), jenis data nol tidak boleh dinilai

4. Object.prototype.toString .call() (gunakan kaedah toString Object untuk menilai) semua jenis data boleh dinilai bahawa keputusan penghakiman dicetak sebagai: '[objek Xxx]'

Penemuduga: Beritahu saya tentang sebarang kaedah untuk mengekalkan komunikasi masa nyata antara bahagian hadapan dan belakang?

Saya: Eh~, pengundian, tinjauan panjang, penstriman iframe, WebSocket, SSE.

Penemuduga: Beritahu saya perbezaan antara tatasusunan pseudo dan tatasusunan?

Saya: Uh~, okay, ringkasannya adalah seperti berikut:

Ciri-ciri tatasusunan pseudo

: Jenisnya ialah objek, tatasusunan tidak boleh digunakan Kaedah, anda boleh mendapatkan panjang, anda boleh gunakan untuk dalam untuk melintasi

Tatasusunan pseudo boleh ditukar kepada kaedah tatasusunan : Array.prototype .slice.call(), Array. from(), [...pseudo array]

Terdapatyang merupakan pseudo array: argumen parameter fungsi, Peta dan Tetapkan kunci(), nilai( ) dan keseluruhan()

[Pembelajaran yang disyorkan: Tutorial JavaScript Lanjutan]

Atas ialah kandungan terperinci Lihat soalan temuduga hadapan ini untuk membantu anda menguasai mata pengetahuan frekuensi tinggi (6). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!