Js面試題整理

一.Ajax和axios的header配置有哪些

axios 的post

request
  .post("https://passport.artron.net/getpasswd/verify", formdata, {
    headers: { "X-Requested-With": "XMLHttpRequest" },
  })

axios 的get

 axios.get(this.getUrl(url), {params:data,headers: {userId,token}})

我們現(xiàn)在來說說post請求常見的數(shù)據(jù)格式(content-type)

Content-Type: application/json : 請求體中的數(shù)據(jù)會以json字符串的形式發(fā)送到后端
Content-Type: application/x-www-form-urlencoded:請求體中的數(shù)據(jù)會以普通表單形式(鍵值對)發(fā)送到后端
Content-Type: multipart/form-data: 它會將請求體的數(shù)據(jù)處理為一條消息萎坷,以標(biāo)簽為單元技即,用分隔符分開赏迟。既可以上傳鍵值對瞄桨,也可以上傳文件庄拇。

如果接受的數(shù)據(jù)類型是Content-Type: application/json時

這種是axios默認(rèn)的請求數(shù)據(jù)類型为狸,我們只需將參數(shù)序列化json字符串進(jìn)行傳遞即可量窘,無需多余的配置
let params = {'title':'test', 'sub' : [1,2,3]}
axios({
    method: 'post',
    url: '/api/lockServer/search',
    params
})

最終發(fā)送的請求是 
{"title":"test","sub":[1,2,3]}

如果接受的數(shù)據(jù)類型是Content-Type::application/x-www-form-urlencoded時有兩種傳遞方式
1.【用 URLSearchParams 傳遞參數(shù)】代碼簡單弯囊,省事含滴,不需要配置請求頭

let param = new URLSearchParams()
param.append('username', 'admin')
param.append('pwd', 'admin')
axios({
    method: 'post',
    url: '/api/lockServer/search',
    data: param
})

2.需要先配置axios請求頭中的content-type為指定類型

配置axios請求頭中的content-type為指定類型
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 
或者 
{headers:{'Content-Type':'application/x-www-form-urlencoded'}

再將參數(shù)轉(zhuǎn)換為query參數(shù), 利用qs,引入 qs 诱渤,這個庫是 axios 里面包含的,不需要再下載了谈况。

import Qs from 'qs'
let data = {
    "username": "cc",
    "psd": "123456"
}

axios({
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    method: 'post',
    url: '/api/lockServer/search',
    data: Qs.stringify(data)
})

如果接受的數(shù)據(jù)類型是 Content-Type:Content-Type: multipart/form-data

   let params = new FormData()
        params.append('file', this.file)
        params.append('id', localStorage.getItem('userID'))
        params.append('userName', this.name)
        params.append('sex', this.sex)
        params.append('mobile', this.phone)
        params.append('email', this.email)
        params.append('qq', this.qq)
        params.append('weChat', this.WeChat)

        axios.post(URL, params, {headers: {'Content-Type': 'multipart/form-data'}}).then(res => {
          if (res.data.code === 0) {
            this.$router.go(-1)
          }
        }).catch(error => {
          alert('更新用戶數(shù)據(jù)失敗' + error)
        })

二勺美、for in 和for of 的區(qū)別

兩者區(qū)別:
1.for-in只是獲取數(shù)組的索引;而for-of會獲取數(shù)組的值
2.for-in會遍歷對象的整個原型鏈碑韵,性能差赡茸;而for-of只遍歷當(dāng)前對象,不會遍歷原型鏈
3.對于數(shù)組的遍歷祝闻,for-in會返回數(shù)組中所有可枚舉的屬性(包括原型鏈上可枚舉的屬性)占卧;for-of只返回數(shù)組的下標(biāo)對應(yīng)的屬性值
4.for-of適用遍歷數(shù)組/字符串/map/set等有迭代器對象的集合,但是不能遍歷普通對象(obj is not iterable)
補(bǔ)充說明for-of只遍歷當(dāng)前有迭代器對象的集合联喘,不會遍歷原型鏈
for in 實例

let arr = [1, 2, 3, 4, 5]
Array.prototype.id = 123
arr.name = 'Jessica'
for (let index in arr) {
    if (index == 2) {
    // break;//0,1
    // continue;//0,1,3,4
    // return;//0,1
    }
    console.log(index, arr[index]);//遍歷[1,2,3,4,5,Jessica,123]

for of 實例

let arr = [1, 2, 3, 4, 5]
Array.prototype.id = 321
arr.name = 'Mars'
for (let value of arr) {
    console.log(value);//只能拿到[1,2,3,4,5]
}

三华蜒、淺拷貝和深拷貝

1.淺拷貝
淺拷貝只復(fù)制某個對象的引用,而不復(fù)制對象本身豁遭,新舊對象還是共享同一塊內(nèi)存
Object.assign()方法可以把任意多個的源對象自身的可枚舉屬性拷貝給目標(biāo)對象叭喜,然后返回目標(biāo)對象。Object.assign()拷貝的是對象的屬性的引用蓖谢,而不是對象本身
2.深拷貝
a捂蕴、JSON轉(zhuǎn)換
缺點:
1 如果對象有函數(shù),函數(shù)無法被拷貝下來
2無法拷貝對象原型鏈上的屬性和方法
3當(dāng)數(shù)據(jù)的層次很深闪幽,會棧溢出
b啥辨、遞歸函數(shù)

四、es6新增語法

https://blog.csdn.net/weixin_47295135/article/details/109602321

五盯腌、防抖和節(jié)流

防抖能不斷延時溉知,直到到達(dá)時間發(fā)送請求,節(jié)流是在規(guī)定的時間間隔內(nèi)只能觸發(fā)一次

基本思路:定義一個定時器,假設(shè)延時1000ms着倾,如果你正在輸入內(nèi)容拾酝,定時器不斷刷新,不斷延時1000ms卡者,不觸發(fā)請求蒿囤,當(dāng)停止輸入時,定時器生效崇决,發(fā)送請求

// 定義防抖函數(shù)
function debounce(fn, delay=500) { // (操作函數(shù)材诽,延時時間)
    let timer = null;
    return function() {
        if (timer) {
            clearTimeout(timer); // timer存在則清除
        }
        
        timer = setTimeout(() => {
            fn.apply(this, arguments);
            timer = null;
        }, delay);
    }
}
const input = document.getElementById("input1");
input.addEventListener('keyup', debounce(function(){
    console.log(input.value);
}, 1000)); 

節(jié)流 還是使用定時器,每固定一個時間段觸發(fā)一次請求

// 定義節(jié)流函數(shù)
function throttle(fn, delay=500) { // 操作函數(shù)恒傻,延時時間
    let timer = null;
 
    return function() {
        if (timer) {
            return;
        }
 
        timer = setTimeout(() => {
            fn.apply(this, arguments);
            timer = null;
        }, delay)
    }
}
 
const drag1 = document.getElementById('drag');
 
drag1.addEventListener('drag', throttle(function(e) { // 監(jiān)聽拖拽事件
    console.log(e.offsetX, e.offsetY); // 打印當(dāng)前位置
}, 1000))
防抖的應(yīng)用場景:

1.監(jiān)聽瀏覽器窗口的resize事件(不管窗口怎么變化脸侥,只執(zhí)行最后一次,所以每次觸發(fā)瀏覽器的resize事件時盈厘,應(yīng)該重新觸發(fā)回調(diào)函數(shù)睁枕,即響應(yīng)事件)
2.在帶有Ajax請求的input上輸入實時搜索事件(不管輸入什么,只在用戶停止輸入時才發(fā)送請求)

節(jié)流的應(yīng)用場景:

1.下拉加載更多(無限滾動)事件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沸手,一起剝皮案震驚了整個濱河市外遇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌契吉,老刑警劉巖跳仿,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捐晶,居然都是意外死亡菲语,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門惑灵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來山上,“玉大人,你說我怎么就攤上這事泣棋〗赫埽” “怎么了畔塔?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵潭辈,是天一觀的道長。 經(jīng)常有香客問我澈吨,道長把敢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任谅辣,我火速辦了婚禮修赞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己柏副,他們只是感情好勾邦,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著割择,像睡著了一般眷篇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荔泳,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天蕉饼,我揣著相機(jī)與錄音,去河邊找鬼玛歌。 笑死昧港,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的支子。 我是一名探鬼主播创肥,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼值朋!你這毒婦竟也來了瓤的?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤吞歼,失蹤者是張志新(化名)和其女友劉穎圈膏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篙骡,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡稽坤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了糯俗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尿褪。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖得湘,靈堂內(nèi)的尸體忽然破棺而出杖玲,到底是詐尸還是另有隱情,我是刑警寧澤淘正,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布摆马,位于F島的核電站,受9級特大地震影響鸿吆,放射性物質(zhì)發(fā)生泄漏囤采。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一惩淳、第九天 我趴在偏房一處隱蔽的房頂上張望蕉毯。 院中可真熱鬧,春花似錦、人聲如沸代虾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棉磨。三九已至坷澡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間含蓉,已是汗流浹背频敛。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留馅扣,地道東北人斟赚。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像差油,于是被迫代替她去往敵國和親拗军。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容