Hari ini saya belajar menghuraikan rentetan json dan menggunakan kaedah eval() Mengapa saya perlu menambah kurungan semasa menghuraikan rentetan? Bingung. Ternyata blok pernyataan {} dalam JavaScript adalah samar-samar, dan ralat akan berlaku jika kurungan tidak ditambahkan Memahami kekaburan ini sangat membantu pemahaman kami tentang kod JavaScript.
1. Dua maksud {} blok pernyataan
mewakili blok pernyataan
a. Anda boleh menggunakan {} untuk menyertakan kod dalam javascript untuk memudahkan pengurusan kod dalam editor. Oleh kerana JavaScript tidak mempunyai skop peringkat blok, pendekatan ini tidak berbahaya.
{ //some code... }
b. Dalam JavaScript, pernyataan bersyarat, pernyataan gelung dan fungsi semuanya memerlukan {} blok pernyataan untuk menyepadukan kod
Objek literal
var box = { name:'kuoaho', age:21 }
//Pada masa ini [kod] digunakan sebagai ungkapan dan boleh diberikan kepada pembolehubah
//Malah, literal objek ialah ungkapan yang boleh menjana nilai objek
2. Apakah yang berlaku jika objek literal tidak digunakan sebagai ungkapan tugasan?
contoh:
{name:'kuoao'} //没有报错,但是也没有创建对象 {name:'kuohao',age} //报错
Seperti yang dapat dilihat dari di atas, literal objek hanya boleh ditetapkan sebagai ungkapan Tidak ada yang salah dengan cara penulisan pertama, tetapi JavaScript menghuraikannya sebagai pernyataan label.
analisis:
{name:'kuoao'} //{}一个语句块 // name:'kuohao',一个label语句,用于标记for循环
3. Tapi masalah datang lagi...
{ name:'kuohao', age:21 }
//Mengapa ini menyebabkan ralat? Bukankah ini cara literal objek ditulis?
Kerana kekaburan {} dalam JavaScript, {} bukan sahaja dianggap sebagai objek literal tetapi juga blok kod.
analysis: { name:'kuohao', age:21 }
Blok kod, dua pernyataan label, jika tiada koma, tiada masalah sama sekali, jadi kuncinya ialah koma Kedua-dua pernyataan itu harus dipisahkan dengan koma bertitik, jadi JavaScript akan menentukan bahawa ini adalah sintaks ralat
4. Tulisan yang betul
({ name:'kuohao', age:21 }) //正确的写法
() akan menukar pernyataan kepada ungkapan, yang dipanggil ungkapan pernyataan Bukankah objek literal ungkapan? Mengapa anda perlu () untuk menukar?
Selepas menambah kurungan, kekaburan ini boleh dihapuskan, kerana kod dalam kurungan akan ditukar menjadi penilaian ekspresi dan dikembalikan, jadi blok pernyataan menjadi objek literal, dan ia juga boleh disimpulkan bahawa, literal Objek mesti wujud sebagai ungkapan