ホームページ  >  記事  >  ウェブフロントエンド  >  Xiaomi JavaScript 面接の質問_JavaScript スキル

Xiaomi JavaScript 面接の質問_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 16:23:411794ブラウズ

インタビューの質問

1.

コードをコピーします コードは次のとおりです:

このような関数を定義してください
関数の繰り返し (関数、回数、待機) {
}
この関数は新しい関数を返すことができます。たとえば、次のように
を使用します。 varrepeatFun =repeat(alert, 10, 5000)
これを繰り返し楽しい (「地獄の世界」) と呼びます
helloworld を 5 秒間隔で 10 回警告します

2.

コードをコピー コードは次のとおりです:


を必要とする関数 stringconcat を作成します。 var result1 = stringconcat("a", "b") result1 = "a b"
var stringconcatWithPrefix = stringconcat.prefix("地獄の世界");
var result2 = stringconcatWithPrefix("a", "b") result2 = "地獄世界 a b"

スナックソリューション

これら 2 つの質問はすべてクロージャに関するものです。早速、コードに進みましょう。

コードをコピーします コードは次のとおりです:

/**
*最初の質問
* @param 関数
* @param 回
* @param wait
* @returns {repeatImpl}
​*/
関数の繰り返し (関数、回数、待機) {
//デバッグを容易にするために匿名関数は使用されません
関数repeatImpl(){
var ハンドル、
_arguments = 引数、
i = 0;
ハンドル = setInterval(function(){
i = i 1;
//指定した回数に達したらタイマーをキャンセル
if(i === 回){
間隔をクリア (ハンドル)
return;
}
func.apply(null, _arguments);
},待って);
}
リターンrepeatImpl;
}
//テストケース
varrepeatFun =repeat(alert, 4, 3000);
repeatFun("地獄の世界");
/**
*2番目の質問
* @returns {string}
​*/
関数 stringconcat(){
var result = [];
Stringconcat.merge.call(null, 結果, 引数);
return result.join(" ");
}
stringconcat.prefix = function(){
var _arguments = [],
_this = これ;
_this.merge.call(null, _arguments, argument);
戻り関数(){
var _args = _arguments.slice(0);
_this.merge.call(null, _args, argument);
return _this.apply(null, _args);
};
};
stringconcat.merge = function(array, arrayLike){
var i = 0;
for(i = 0; i array.push(arrayLike[i]);
}
}
//テストケース
var result1 = stringconcat("a", "b"); //result1 = "a b"
var result3 = stringconcat("c", "d"); //result1 = "a b"
var stringconcatWithPrefix = stringconcat.prefix("地獄の世界");
var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1");
var result2 = stringconcatWithPrefix("a", "b") //result2 = "地獄の世界 a b"
var result4 = stringconcatWithPrefix1("c", "d") //result2 = "地獄の世界 a b"
アラート(結果1);
アラート(結果2);
アラート(結果3);
アラート(結果4);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。