2016-03-11 29 views
5

Tôi đã xem qua câu hỏi sau trên StackOverflow: How many parameters are too many?Có bao nhiêu thông số quá nhiều trong JavaScript?

Điều này khiến tôi suy nghĩ, có giới hạn thực tế nào về số lượng tham số của hàm JS không?

test(65536); // okay 
 
test(65537); // too many 
 

 
function test(n) { 
 
    try { 
 
     new Function(args(n), "return 42"); 
 
     alert(n + " parameters are okay."); 
 
    } catch (e) { 
 
     console.log(e); 
 
     alert(n + " parameters are too many."); 
 
    } 
 
} 
 

 
function args(n) { 
 
    var result = new Array(n); 
 
    for (var i = 0; i < n; i++) 
 
     result[i] = "x" + i; 
 
    return result.join(","); 
 
}

Hóa ra, áp đặt Javascript một giới hạn thực tế của 65536 thông số về chức năng.

Tuy nhiên, điều thú vị là các thông báo lỗi nói rằng giới hạn là 65.535 thông số:

SyntaxError: Too many parameters in function definition (only 65535 allowed) 

Vì vậy, tôi có hai câu hỏi:

  1. Tại sao sự khác biệt này? Đây có phải là lỗi từng người một trong việc triển khai ngôn ngữ không?
  2. Chuẩn ECMAScript có áp đặt giới hạn này cho các tham số chức năng không?
+2

Nó phụ thuộc vào máy ảo chạy javascript http://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-chức năng-có thể chấp nhận – Noctisdark

+0

@Noctisdark Bật ra trong Firefox giới hạn 65535 về các tham số chức năng được tôn trọng. Tôi không thể kiểm tra trình duyệt IE vì tôi đang sử dụng Linux. Vì Opera hiện chỉ là Google Chrome, tôi cho rằng nó hoạt động giống như cách Chrome làm. –

+0

Không phải là nó tạo ra sự khác biệt lớn ở đây, nhưng thử nghiệm là thiếu sót vì nó cũng bị hạn chế bởi số lượng tối đa các phần tử mà một mảng hỗ trợ. –

Trả lời

Các vấn đề liên quan