ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 関数のパラメータ制限 description_javascript スキル

JavaScript 関数のパラメータ制限 description_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 18:15:591169ブラウズ
テスト結果:

safari には 65535 個あります。これは格納する ushort です (2 バイト 16 1)。それ以上は無視されます。

他のブラウザは少なくとも int.MaxValue ですが、FireFox では実際のパラメータを維持するためにさえ long を使用していると言われています。
他のブラウザは int または uint である可能性があります。結局のところ、ボトルネックは 65535 であることがわかっています。

上記の基礎に基づいて、配列を接続するときに a=a.concat(b) の代わりに [].push.apply(a,b) を使用することを検討できます。
safari の場合、b の長さは 65535 を超えることができないことに注意する必要があります。
concat の問題は、生成された新しい配列が 2 つの配列 a と b を走査し、a と b の要素を順番に配置することです。

テストコード:
var count = 100000、a = [1,2,3]、b = [4,5,6]、r = []、i、d;
d = 新しい日付 ;

for (i = count; i-- ;){
a.concat(b);
}
r[0] = 新しい日付 - d;

d = 新しい日付 ;


for (i = count; i-- ;){
r.push.apply(a,b) );
//a = [1,2,3] ;
}
r[1] = 新しい日付 - d;
アラート(r);

IE6 chrome2 safari 3 firefox 2 などの古いブラウザでも、一部のブラウザが削除されたとしてもプッシュでは完全に勝利していると結論付けることができます。
//a = [1, 2 ,3]; コメント部分は、実際には、chrome7 dev や safari 5 よりも優れています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。