Tôi gặp vấn đề này khi biến bị thiếu trường và người dùng nhận thấy cảnh báo rằng biến này hoặc biến đó không có thuộc tính này hoặc thuộc tính đó. Trong trường hợp đơn giản, nó rất thẳng về phía trước.Có bao nhiêu kiểm tra đối với null là thích hợp?
if(field)
doSomething(field.subField);
Tuy nhiên, trong các trường hợp thực nghiệm, tôi thấy mình bị kiểm tra quá mức vô lý.
if(!data
|| !data.records
|| !data.records[0]
|| !data.records[0].field
|| !data.records[0].field.id)
return null;
doSomething(data);
Ý tôi là, điều này có vẻ như tôi là thợ sửa ống nước chứ không phải nhà phát triển. Vì vậy, tôi có một cảm giác rất mạnh mẽ rằng kiểm tra của tôi, trong khi đủ, có thể là một chút quá-quá-overkill. Có một quy ước nào trong JS về thời điểm thực hiện kiểm tra không?
Nếu bạn cần thực hiện việc này liên tục, mã của bạn có thể có nhiều vấn đề hơn bạn nghĩ. – Prinzhorn
Có thư viện có thể trợ giúp: https://github.com/jclem/steeltoe – epascarello
Cách sử dụng ['try/catch'] (https://developer.mozilla.org/en-US/docs/JavaScript /Reference/Statements/try...catch) thay thế? – Blazemonger