Kesalahan JavaScript (Uncaught SyntaxError: Akhir input yang tidak terduga)

211

Saya memiliki beberapa kode JavaScript yang berfungsi di FireFox tetapi tidak di Chrome atau IE.

Di Chrome JS Console saya mendapatkan kesalahan ikuti:

+ Msgstr "Sintaks Tanpa Perintah: Akhir input tidak terduga".

Kode JavaScript yang saya gunakan adalah:

<script>
 $(function() {
 $("#mewlyDiagnosed").hover(function() {
    $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
 }, function() {
    $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
 });
</script>

Dikatakan kesalahan ada pada baris terakhir yaitu });

Phillip
sumber
2
Saya tahu bahwa Chrome V8, untuk DELETEdi server jika tanggapannya adalah 200 successbukannya 204 success - no response saya akan mendapatkan kesalahan ini juga. Hanya kepala kalau-kalau ada yang mendapatkan ini juga.
Eric D. Johnson

Jawaban:

402

Tambahkan satu detik });.

Ketika indentasi dengan benar, kode Anda membaca

$(function() {
    $("#mewlyDiagnosed").hover(function() {
        $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
    }, function() {
        $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
    });
MISSING!

Anda tidak pernah menutup bagian luar $(function() {.

Slaks
sumber
278
Pelajarannya adalah, selalu inden kode Anda (dan inden dengan benar).
SLaks
4
Ya ampun, kuharap VIM-ku menangkap kesalahan sintaksis itu. Saya tidak percaya berapa banyak waktu yang saya habiskan kadang-kadang dengan kesalahan sintaks yang ceroboh.
HeyWatchIni
4
Pelajarannya adalah, selalu gunakan editor yang baik dengan plugin yang baik, yang dapat mendeteksi pemasangan tanda kurung, menyorotnya atau bahkan memperbaiki masalah.
Sławomir Lenart
1
@HeyWatchThis Anda dapat mencoba Syntastic for Vim.
Nathan Long
1
Saya menggunakan neomake untuk vim / neovim, dikonfigurasi untuk menjalankan jshint setiap kali saya menyimpan file JavaScript. Jika saya memiliki kesalahan sintaks, saya akan melihat simbol peringatan / kesalahan dalam selokan vim / neovim. Ketika saya meletakkan kursor saya pada baris itu, baris perintah vim / neovim akan menampilkan pesan yang mengatakan apa kesalahannya.
trusktr
89

Dalam kasus saya, saya mencoba mengurai JSON kosong:

JSON.parse(stringifiedJSON);

Dengan kata lain, yang terjadi adalah sebagai berikut:

JSON.parse("");
falsarella
sumber
3
Sayangnya, ini termasuk $.parseJSONjquery 1.11.2
Nasser Al-Wohaibi
37

http://jsbeautifier.org/ sangat membantu untuk membuat indentasi kode JS Anda yang sudah dimodifikasi.

Juga, dengan Google Chrome Anda dapat menggunakan "cetak cantik". Lihat contoh tangkapan layar di bawah ini yang ditampilkan jquery.min.jsdari Stack Overflow dengan indentasi baik langsung dari browser saya :)

masukkan deskripsi gambar di sini

Hugo
sumber
14

Memformat kode Anda sedikit, Anda hanya menutup fungsi hover dalam. Anda belum menutup bagian luar, ditandai di bawah:

$(// missing closing)
 function() { // missing closing }
     $("#mewlyDiagnosed").hover(
        function() {
            $("#mewlyDiagnosed").animate({'height': '237px', 'top': "-75px"});
        }, 
        function() {
            $("#mewlyDiagnosed").animate({'height': '162px', 'top': "0px"});
        });
hvgotcodes
sumber
5

Dalam kasus saya, itu berakhir dengan masalah kuotasi ganda sederhana di bookmarklet saya , ingat hanya menggunakan kutipan tunggal pada bookmarklet. Kalau-kalau ini membantu seseorang.

Yëco
sumber
3

Saya mendapatkan kesalahan ini ketika saya mencoba menulis bookmarklet javascript. Saya tidak tahu apa yang menyebabkannya. Tetapi akhirnya saya mencoba URL yang menyandikan bookmarklet, melalui situs web berikut: http://mrcoles.com/bookmarklet/ dan kemudian kesalahan itu hilang, jadi pasti ada masalah dengan karakter tertentu dalam kode javascript yang ditafsirkan sebagai URL khusus karakter kontrol.

pengguna280109
sumber
2
Saya punya // komentar di js saya, yang berkomentar sedikit lebih daripada yang saya inginkan sejak menempelkannya di url bookmarklet menjadikan seluruh kode satu-liner dan // berada di tengah-tengah kode.
mflodin
Menghapus komentar juga memperbaikinya untuk saya.
Alex
3

Kesalahan ini terutama disebabkan oleh panggilan ajax yang dikembalikan kosong, ketika mencoba untuk mengurai JSON yang kosong.

Untuk menyelesaikan tes ini jika data yang dikembalikan kosong

$.ajax({
    url: url,
    type: "get",
    dataType: "json",
    success: function (response) {

        if(response.data.length == 0){
            // EMPTY
        }else{
            var obj =jQuery.parseJSON(response.data);
            console.log(obj);
        }
    }
});
Jimmy Obonyo Abor
sumber
3

Dalam kasus saya, itu disebabkan oleh hilang (0)di javascript:void(0)dalam anchor.

Sam
sumber
0

Saya mendapatkan ini karena saya punya komentar di file yang saya tambahkan ke JS saya, alasan yang sangat canggung untuk apa yang terjadi - meskipun ketika mengklik pada VMfile yang telah dirender dan menangkap kesalahan, Anda akan menemukan apa sebenarnya kesalahan adalah, dalam kasus saya itu hanya membatalkan komentar beberapa kode yang saya gunakan.

Jack Hales
sumber
0

Saya juga mendapatkan kesalahan ini dengan menunjuk ke akhir blok skrip terakhir pada halaman, hanya untuk menyadari kesalahan sebenarnya dari mengklik elemen dengan onclick="pagename"bukan onclick="window.location='pagename'". Tidak selalu braket yang hilang!

justanotherguy
sumber