Đây là jsfiddleHàm Javascript không trả về đối tượng khi có ngắt dòng giữa câu lệnh trả về và đối tượng?
Mã đầy đủ:
function foo1(){
return {msg: "hello1"};
}
function foo2(){
return
{msg: "hello2"};
}
// output = "foo1 = {"msg":"hello1"}"
console.log('foo1 = ' , JSON.stringify(foo1()));
//output = " foo2 = undefined "
console.log('foo2 = ' , JSON.stringify(foo2()));
Sự khác biệt giữa hai là trong foo2, các {msg: 'hello'}
là phù hợp mới của riêng mình. Tôi đã mong đợi trình phân tích cú pháp bỏ qua khoảng trắng?
không có câu lệnh trả về Tôi tin rằng, tôi nhớ đã đọc nó ở đâu đó rằng đây là một trong những trường hợp hiếm hoi trong JS mà khoảng trắng không quan trọng. Có thể trùng lặp http://stackoverflow.com/questions/8528557/a-return-statement-in-javascript-does-not-work-properly-if-the-return-value-is – OJay
Kiểm tra liên kết này: http: // robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/ –
Một số khoảng trắng nhất định. Bất kỳ số không gian ASCII bình thường nào đều tốt, trong khi không cho phép một LF/CR đơn lẻ. Có vẻ tùy ý, nhưng tôi sẽ giả sử có một lời giải thích hợp lý cho lý do tại sao tôi bị mất một giờ về vấn đề này đêm qua. Thông báo lỗi của linter có thể chính xác/hữu ích hơn. – sss4r