Interviewfragen
1.
Bitte definieren Sie eine solche Funktion
Funktionswiederholung (Funktion, Zeiten, Warten) {
}
Diese Funktion kann eine neue Funktion zurückgeben. Verwenden Sie beispielsweise
wie folgt
var wiederholtFun = wiederholen(alert, 10, 5000)
Nennen Sie dies wiederholten Spaß („Höllenwelt“)
Benachrichtigt helloworld zehnmal, jedes Mal im Abstand von 5 Sekunden
2.
Schreiben Sie eine Funktion stringconcat, die
erfordert
var result1 = stringconcat("a", "b") result1 = "a b"
var stringconcatWithPrefix = stringconcat.prefix("hellworld");
var result2 = stringconcatWithPrefix("a", "b") result2 = "hellworld a b"
Snack-Lösung
Bei diesen beiden Fragen geht es um Schließungen. Kommen wir ohne weitere Umschweife direkt zum Code.
/**
*Die erste Frage
* @param func
* @param mal
* @param warte
* @returns {repeatImpl}
*/
Funktionswiederholung (Funktion, Zeiten, Warten) {
//Anonyme Funktionen werden nicht verwendet, um das Debuggen zu erleichtern
Funktion repeatImpl(){
var handle,
_arguments = Argumente,
i = 0;
handle = setInterval(function(){
i = i 1;
//Brech den Timer ab, wenn die angegebene Anzahl erreicht ist
if(i === times){
Clearinterval (Handle);
zurück;
}
func.apply(null, _arguments);
},warte);
}
Geben Sie „repeatImpl;
“ zurück
}
//Testfall
var wiederholenFun = wiederholen(alert, 4, 3000);
wiederholenFun("hellworld");
/**
*Die zweite Frage
* @returns {string}
*/
Funktion stringconcat(){
var result = [];
Stringconcat.merge.call(null, result, arguments);
Rückgabe result.join(" ");
}
stringconcat.prefix = function(){
var _arguments = [],
_this = this;
_this.merge.call(null, _arguments, arguments);
Rückgabefunktion(){
var _args = _arguments.slice(0);
_this.merge.call(null, _args, arguments);
return _this.apply(null, _args);
};
};
stringconcat.merge = function(array, arrayLike){
var i = 0;
for(i = 0; i < arrayLike.length; i ){
array.push(arrayLike[i]);
}
}
//Testfall
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"
alarm(result1);
alarm(result2);
alarm(result3);
alarm(result4);