Questions d'entretien
1.
Veuillez définir une telle fonction
fonction répéter (func, times, wait) {
>
Cette fonction peut renvoyer une nouvelle fonction, par exemple, utilisez
comme ceci
var répétéFun = répéter (alerte, 10, 5000)
Appelez cela un plaisir répété (« hellworld »)
Alertera helloworld dix fois, avec un intervalle de 5 secondes à chaque fois
2.
Écrivez une fonction stringconcat, qui nécessite
var result1 = stringconcat("a", "b") result1 = "a b"
var stringconcatWithPrefix = stringconcat.prefix("hellworld");
var result2 = stringconcatWithPrefix("a", "b") result2 = "hellworld a b"
Solution collation
Ces deux questions concernent toutes les fermetures. Sans plus tarder, passons directement au code.
/**
*La première question
* @param func
* @param fois
* @param attends
* @returns {repeatImpl}
*/
fonction répéter (func, times, wait) {
//Les fonctions anonymes ne sont pas utilisées pour faciliter le débogage
Fonction répéterImpl(){
var handle,
_arguments = arguments,
i = 0;
handle = setInterval(function(){
i = i 1;
//Annulez le minuteur lorsque le nombre de fois spécifié est atteint
if(i === times){
Clearinterval (poignée);
revenir ;
}
func.apply(null, _arguments);
}, attends);
>
Retour répéterImpl;
>
//Cas de test
var répéterFun = répéter(alerte, 4, 3000);
répéterFun("monde de l'enfer");
/**
*La deuxième question
* @returns {string}
*/
fonction stringconcat(){
var résultat = [];
Stringconcat.merge.call(null, résultat, arguments);
Renvoie result.join(" ");
>
stringconcat.prefix = fonction(){
var _arguments = [],
_this = ceci;
_this.merge.call(null, _arguments, arguments);
Fonction de retour(){
var _args = _arguments.slice(0);
_this.merge.call(null, _args, arguments);
return _this.apply(null, _args);
};
};
stringconcat.merge = function(array, arrayLike){
var je = 0;
pour (i = 0; i < arrayLike.length; i ){
array.push(arrayLike[i]);
>
>
//Cas de test
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"
alerte(result1);
alerte(result2);
alerte(result3);
alerte(result4);