Soalan temu bual
1
Sila tentukan fungsi sedemikian
fungsi berulang (func, times, wait) {
}
Fungsi ini boleh mengembalikan fungsi baru, contohnya, gunakan
seperti ini
var repeatedFun = ulangi(makluman, 10, 5000)
Panggil repeatedFun ("dunia neraka")
ini
Akan memaklumkan helloworld sepuluh kali, dengan selang 5 saat setiap kali
2
Tulis fungsi stringconcat, yang memerlukan
var result1 = stringconcat("a", "b") result1 = "a b"
var stringconcatWithPrefix = stringconcat.prefix("hellworld");
var result2 = stringconcatWithPrefix("a", "b") result2 = "hellworld a b"
Penyelesaian snek
Kedua-dua soalan ini adalah mengenai penutupan Tanpa berlengah lagi, mari terus ke kod.
/**
*Soalan pertama
* @param func
* @param times
* @param tunggu
* @returns {repeatImpl}
,*/
fungsi berulang (func, times, wait) {
//Fungsi tanpa nama tidak digunakan untuk memudahkan penyahpepijatan
Fungsi repeatImpl(){
pemegang var,
_arguments = hujah,
i = 0;
pemegang = setInterval(function(){
i = i 1;
//Batalkan pemasa apabila bilangan kali yang ditentukan dicapai
jika(i === kali){
Clearinterval (pemegang);
kembali;
}
func.apply(null, _arguments);
},tunggu);
}
Kembalikan repeatImpl;
}
//Kes ujian
var repeatFun = ulangi(makluman, 4, 3000);
repeatFun("dunia neraka");
/**
*Soalan kedua
* @kembali {rentetan}
,*/
fungsi stringconcat(){
hasil var = [];
Stringconcat.merge.call(null, result, arguments);
Kembalikan hasil.join(" ");
}
stringconcat.prefix = function(){
var _arguments = [],
_ini = ini;
_this.merge.call(null, _arguments, arguments);
Kembalikan fungsi(){
var _args = _arguments.slice(0);
_this.merge.call(null, _args, arguments);
return _this.apply(null, _args);
};
};
stringconcat.merge = function(array, arrayLike){
var i = 0;
untuk(i = 0; i < arrayLike.length; i ){
array.push(arrayLike[i]);
}
}
//Kes ujian
var result1 = stringconcat("a", "b"); //result1 = "a b"
var result3 = stringconcat("c", "d"); //result1 = "a b"
var stringconcatWithPrefix = stringconcat.prefix("hellworld");
var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1");
var result2 = stringconcatWithPrefix("a", "b"); //result2 = "hellworld a b"
var result4 = stringconcatWithPrefix1("c", "d"); //result2 = "hellworld a b"
makluman(hasil1);
makluman(hasil2);
makluman(hasil3);
makluman(hasil4);