Javascript, miért nem tudom felülírni az adott karaktert?
var a = "asd"
a = "Asd"
így felülírja az egész stringet.
de nekem csak az első karaktert kellene kicserélni benne.
viszont ha azt írom hogy
a[0] = a[0].toUpperCase()
akkor nem cseréli ki.
ha console.log-ba iratom ki hogy a[0].toUpperCase() akkor kihozza hogy _A_, akkor miért nem írja felül a változóban?
JS-ben nem változtathatóak a stringek, újat kell létrehoznod az eredetit alapulvévve (lásd a linket).
A karakterlánc Javascriptben lényegében egy objektum, aminek tagváltozója direkt se nem törölhető sem módosítható:
"When using bracket notation for character access, attempting to delete or assign a value to these properties will not succeed. The properties involved are neither writable nor configurable."
felül kell írnod vagy így:
a = a.replace(/^(.{1})/,x=>x.toUpperCase())
vagy így:
a = a[0].toUpperCase() + a.slice(1);
"Most akkor rohadtul rakd már jozzá, hogy az adott nyelveket mikor készítették"
A C-t/C++-t, PHP-t, Ruby-t a mai napig fejlesztik. Pláne hogy a Java és a Python egykorú a PHP-val és a Ruby-val (1995). ;) Nem feltétlen a nyelv kora számít.
A nyelv kora is számít(nyilván nem ez a döntő szempont), mert az alapjait akkor rakták le, azóta pedig nem változtatták meg, mert a rengeteg alkalmazás amit a nyelvben írtak nem tudná kezelni. Ez egy olyan legacy dolog ami élete végéig kísérte i fogja a nyelvet, hiába a folyamatos fejlesztés.
Személyes (5 éves) tapasztalatom az az, hogy jobb ha immutable az objektum: szálbiztos, nem lehet "véletlenül" átállítani.
Az utolsó mondataidra azt tudom mondani,hogy ez baj. Gondolhattak volna arra,bevezethettek volna egy olyan fejlesztést,hogy ez megváltoztatható legyen. Mondjuk egy *dynamic* szóval,pl
var a = "sanyi*
dynamic a[0]= 'S'
Azaz 'a' ezzel "Sanyi"-t tartalmazza majd.
Érthető miről beszélek?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!