String'dagi bitta simvolni
string[index] yoki string.charAt(index) usulida olish mumkin. Agar index'imiz [0, `string.length - 1`] oralig'ida bo'lsa, bu 2 usulning bir biridan farqi yo'q.Lekin, index'imiz "boshqachaoq" qiymat bo'lsachi? 🤔
Tekshiramiz:
'hello'[NaN]; // undefined
'hello'.charAt(NaN); // 'h'
'hello'[undefined]; // undefined
'hello'.charAt(undefined); // 'h'
Demak,
[NaN] bilan holat mantiqan olinsa to'g'ri. Lekin
.charAt(NaN) 'chi? Bu yerda nima bo'lyapti? Albatta "type coercion"! Ya'ni biz bergan qiymat bilvosita songa, Number'ga aylanib ketyapti:
undefined -> 0
charAt(undefined) -> charAt(0)
Shunday ekan, agar mana bunday qilsak kodimiz kutilgan natijani beradi:
'hello'.charAt('00') // 'h'