第一題:
知識點:
Onkeypress:在文本框中的這個屬性表示斥废,在鍵盤按下并抬起之后觸發(fā)的事件(綁定函數事件)因為函數當中需要使用事件對象以及綁定當前元素,所以在調用函數back()時给郊,需要在里面?zhèn)鬟f參數牡肉,也就是當前元素,(this表示當前元素)淆九,以實參形式傳遞給back這個函數统锤,
在本題當中的Onkeypress=“back(this毛俏,event)”里傳遞的第二個參數event可以不傳,因為當綁定好元素之后饲窿,函數當中就已經可以得到事件對象了
Event.returnValue: 通過該屬性可以取消事件處理程序中調用函數的默認操作拧抖,簡單來說就是阻止默認的行為,在這個例子當中把此屬性設置為false免绿,阻止了enter自帶的操作(換行事件)唧席,所以現在你按下enter時不會再進行換行操作,只有字符寫滿一行時才會自動換行嘲驾,這里的換行不是enter鍵起的作用淌哟,只是根據容器的大小進行的換行排序
第二題:
答案:永遠不輸出
原因:在這段代碼當中,在第一行代碼var t=true 辽故,之后用定時器在一秒后更改值為false徒仓,
首先SeTtimeout是一個異步執(zhí)行,不在主線程當中誊垢,所以在while循環(huán)事件的判斷條件中掉弛,當t是一個true時,則循環(huán)執(zhí)行喂走,在這個循環(huán)事件中由于我們沒有給任何限制條件讓它去停止循環(huán)殃饿,所以造成了死循環(huán),主線程卡在這里芋肠,無法插入異步行為乎芳,所以,代碼永遠不會輸出帖池,甚至會造成電腦崩潰
第三題:
在這個解答中Array.prototype.filter.call這個方法的作用分解:
Array.prototype:數組的構造函數的原型奈惑,在這里我們可以查看到數組上的方法,也可以用“.”的方法進行使用睡汹,這個原型也是一個數組類型肴甸,在這里取代被操作的數組
filter():數組當中的一個方法,屬于過濾器囚巴,括號中是一個回調函數原在,在回調函數中有三個參數,第一個是遍歷到的每一項文兢,第二個是下標晤斩,第三個是原數組,根據return出的條件去進行判斷姆坚,過濾出符合條件的值,再形成一個新的數組
call():這個方法是對this進行重定向实愚,括號中第一個參數表示定義當前this的指向兼呵,第二個參數兔辅,可以是任意類型,包括函數
所以這里tempArray接收到的是一個返回的新數組击喂,把這個數組再用join方法轉換成字符串并用“,”分隔就可以了
function specify(str){
str=[...str]
let s=str.filter((val)=>{
return val!=","
})
return s.join(",")}
console.log(specify("hello,world"));
此題另一種解答方式:在此方法中使用了es6中的新語法维苔,”…” 剩余運算符,這個在這里起到的作用是展開懂昂,把str這個字符串展開并轉換成了一個新數組介时,然后用過濾器去掉字符串中多余的“,”凌彬,最后再用join方法轉換成字符串并用逗號分隔就可以了