Ketik konversi ke string dalam javascript rupanya mengabaikan biarkan sebagai kata kunci.

String(let) melempar kesalahan referensiError: biarkan tidak didefinisikan

Sedangkan, String(var) melempar kesalahan sintakser: token tak terduga 'var'

Apakah itu perilaku yang dimaksud?

2
Abdulkalam R 6 April 2021, 03:42

1 menjawab

Jawaban Terbaik

"Kata kunci yang dipesan" tidak dapat digunakan sebagai pengidentifikasi (nama variabel). var adalah kata kunci yang dipesan.

let bukan kata kunci yang dipesan, karena itu akan mematahkan kompatibilitas: skrip kuno ditulis tanpa es6 dalam pikiran yang terjadi menggunakan let sebagai nama variabel akan gagal (dan browser mencoba Sangat Keras tidak untuk mematahkan kompatibilitas mundur

  • Lihat pertanyaan itu untuk penjelasan yang diperpanjang).

Jadi gunakan String(var) melempar kesalahan sintaks , tetapi secara sintaksis mengizinkan penggunaan let - up sampai titik di mana Anda mencoba merujuknya (pada titik mana kesalahan dilempar karena Tidak ada variabel bernama let ada).

Untuk alasan yang sama persis, dimungkinkan untuk mendefinisikan variabel bernama let, tetapi tidak untuk menentukan variabel bernama var:

var let = 123;
console.log(String(let));
var var = 123;
console.log(String(var));

Juga, let tidak dapat dinyatakan sebagai pengidentifikasi dalam mode ketat:

'use strict';
var let = 123;
console.log(String(let));

Ini dimungkinkan karena jika mode ketat sedang digunakan, kode yang sedang berjalan dijamin telah ditulis setelah ES5 (dan agar tidak ada kompatibilitas mundur yang perlu dikhawatirkan).

Sebagai catatan komentar, ini adalah bukan string interpolation. Ini hanya parser yang mengidentifikasi nama variabel / pengidentifikasi yang valid.

3
CertainPerformance 6 April 2021, 01:01