Apakah ada alasan saya harus menggunakan string.charAt(x)
notasi braket string[x]
?
javascript
string
Blender
sumber
sumber
"😃".charAt(0)
akan mengembalikan karakter yang tidak dapat digunakanJawaban:
Notasi braket sekarang berfungsi di semua browser utama, kecuali untuk IE7 dan di bawahnya.
Dulu itu ide yang buruk untuk menggunakan tanda kurung, karena alasan ini ( Sumber ):
sumber
Dari MDN :
str.charAt(i)
lebih baik dari perspektif kompatibilitas jika kompatibilitas IE6 / IE7 diperlukan.str[i]
lebih modern dan berfungsi di IE8 + dan semua browser lainnya (semua Edge / Firefox / Chrome, Safari 2+, semua iOS / Android).sumber
Mereka dapat memberikan hasil yang berbeda dalam kasus tepi.
Fungsi karakter tergantung pada bagaimana indeks dikonversi ke Nomor dalam spesifikasi .
sumber
'hello'[undefined] // undefined
dan'hello'.charAt(undefined) //h
null
bekerja sepertiundefined
, tapi lihat ini:"hello"["00"] // undefined
tapi"hello".charAt("00") // "h"
dan"hello"["0"] // "h"
[]
..charAt()
melakukan konversi ekstra untuk parameternya menjadi aNumber
. FYI, hampir tidak ada perbedaan kinerja saat ini.String.charAt () adalah standar asli dan berfungsi di semua browser. Di IE 8+ dan browser lain, Anda dapat menggunakan notasi braket untuk mengakses karakter tetapi IE 7 dan di bawahnya tidak mendukungnya.
Jika seseorang benar-benar ingin menggunakan notasi braket di IE 7, lebih baik untuk mengubah string ke array menggunakan
str.split('')
dan kemudian menggunakannya sebagai array, kompatibel dengan browser apa pun.sumber
Hasil yang sangat menarik ketika Anda menguji accessor index string vs
charAt()
metode. Tampaknya Chrome adalah satu-satunya browser yangcharAt
lebih suka .Karakter vs indeks 1
ChartAt vs indeks 2
ChartAt vs indeks 3
sumber
index
juga lebih cepat di chrome.Ada perbedaan ketika Anda mencoba mengakses indeks yang di luar batas atau bukan bilangan bulat.
string[x]
mengembalikan karakter padax
posisi thstring
jikax
bilangan bulat antara 0 danstring.length-1
, dan mengembalikanundefined
sebaliknya.string.charAt(x)
mualafx
ke integer menggunakan proses dijelaskan disini (yang pada dasarnya putaranx
bawah jikax
adalah nomor non-integer dan kembali 0 jikaparseInt(x)
iniNaN
) dan kemudian kembali karakter pada posisi bahwa jika bilangan bulat adalah antara 0 danstring.length-1
, dan kembali string kosong jika tidak .Berikut ini beberapa contohnya:
Perbedaan lain adalah bahwa menugaskan untuk
string[x]
tidak melakukan apa-apa (yang dapat membingungkan) dan menugaskanstring.charAt(x)
adalah kesalahan (seperti yang diharapkan):Alasan mengapa penetapan
string[x]
tidak berfungsi adalah karena string Javascript tidak dapat diubah .sumber