2011-12-17 31 views
14

Khi chạy kịch bản sau đây trong Safari (với Thanh tra mở)Không thể kiểm tra biến phạm vi khi sử dụng chế độ nghiêm ngặt

window.onload = function() { 
    "use strict"; 
    var x = 1; 
    debugger; // debugger will auto-break on this line 
} 

tôi nhận được lỗi sau khi yêu cầu x trong giao diện điều khiển trong khi được trên breakpoint mà :

Error 
message: "'with' statements are not valid in strict mode" 

Xóa đường dây "use strict"; cho phép tôi truy cập x từ bảng điều khiển trong khi ở điểm ngắt đó.

Cả hai lần x được hiển thị bên dưới Scope Variables trong thanh bên.

+2

Tôi nghĩ rằng lỗi phải ở nơi khác; nó không xảy ra với tôi [sử dụng trang thử nghiệm này] (http://jsbin.com/acagon) trong Safari (Tôi không thể đặt điểm ngắt, nhưng tôi không nhận được bất kỳ lỗi nào và tôi nhận được kết quả mong đợi). Bạn có thể gửi một trường hợp thử nghiệm * hoàn chỉnh * sao chép vào câu hỏi (và lý tưởng là http://jsbin.com hoặc http://jsfiddle.net). –

+0

Tôi không thể đặt ngón tay lên đó, nhưng có điều gì đó nói với tôi rằng bạn có một câu lệnh 'with' ở đâu đó trong mã của bạn ... Tôi hoàn toàn đoán ở đây, tất nhiên ... (Btw' with' statement throw in mã chế độ nghiêm ngặt.) –

+0

bạn có 'with()' trong mã của mình ở một nơi khác không? với() không thích và nhiều người muốn nó ngừng hoạt động trong ECMAScript –

Trả lời

24

này dường như là một vấn đề được biết đến với Safari: https://bugs.webkit.org/show_bug.cgi?id=65829

Để tái tạo các lỗi, bạn chỉ cần gõ bất kỳ mã vào giao diện điều khiển trong khi dừng lại ở một breakpoint và khi ở chế độ nghiêm ngặt.

Dưới đây là mã từ báo cáo lỗi:

(function(){ 
    "use strict"; 
    debugger; 
})(); 

Vì vậy, khi bạn đang ở breakpoint, đi ra cửa sổ Console và gõ 2+3 (hoặc bất kỳ biểu hiện), và bạn sẽ nhận được lỗi.

enter image description here

+3

+1 Đẹp một .... –

+0

Nó nói lỗi đã được giải quyết nhưng tôi vẫn nhìn thấy nó trong Safari 8.0.7. – user276648

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