PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ist es Javascript (3 Zeiler) oder bin ich es?


seba86
2015-03-17, 20:50:07
Guten Abend,

schaut mal den simplen Code an:


var a = [];
var b = [[1,2],[3,4]];
a.push(b[0]);

a[0][0] = 'FUUU'; // Variable B ändert sich AUCH!


Ist das ein erwartetes Verhalten, dass sich Variable b auch ändert oder... :freak:

EDIT:

Habe ich selber gelöst: Javascript nimmt im Gegensatz zu vielen anderen Programmiersprachen (PHP!) sämtliche Verweise By Reference statt By Value!

Lösung für oben wäre, b vorher zu kopieren z.B:

var bCopy = b.slice();

Tricky!

Dr.Doom
2015-03-18, 13:57:42
Zumindest in Python, Java und vmtl auch in C<Sonderzeichen> ist das eigentlich das erwartete Verhalten, weil das eine Listenobjekt [1,2] nach dem push sowohl in Liste a als auch in Liste b steckt.

Aber ich kenn' PHP halt (nicht) mehr... :tongue:

seba86
2015-03-18, 15:11:46
Das wusste ich nicht, danke für die Info. Ich bin nahezu nur in Websprachen aktiv, ich denke das langt schon.

Muss ja für außenstehende verrückt klingen, dass man MINDESTENS 5 Sprachen gleichzeitig beherrschen muss (CSS,HTML,Javascript,MySQL,PHP) um eine Website zu gestalten, die ganzen Erweiterungen (jQuery, Canvas) und Feinheiten (Server, SEO) nichtmal mitgezählt!

Dr.Doom
2015-03-18, 15:47:24
Muss ja für außenstehende verrückt klingen, dass man MINDESTENS 5 Sprachen gleichzeitig beherrschen muss (CSS,HTML,Javascript,MySQL,PHP) um eine Website zu gestalten, die ganzen Erweiterungen (jQuery, Canvas) und Feinheiten (Server, SEO) nichtmal mitgezählt!Ja, deswegen mache ich das auch nicht (mehr). :ucatch: :weg:

seba86
2015-03-18, 15:54:14
Deswegen mache ich das z.B. nicht mehr hauptberuflich - da sind wir einer Meinung!

...und ich habe schon den Kommentar erwartet "CSS und HTML sind keine Programmiersprachen!" ^^

RattuS
2015-03-18, 18:37:07
MINDESTENS 5 Sprachen gleichzeitig beherrschen muss (CSS,HTML,Javascript,MySQL,PHP) um eine Website zu gestalten, die ganzen Erweiterungen (jQuery, Canvas) und Feinheiten (Server, SEO) nichtmal mitgezählt!
[...]
...und ich habe schon den Kommentar erwartet "CSS und HTML sind keine Programmiersprachen!" ^^
Sind es auch nicht. Und "beherrschen" muss man HTML und CSS schon mal gar nicht, um eine Webseite erstellen zu können. Wissen über das DOM wird erst relevant, wenn man zur Laufzeit damit arbeiten muss (JS). Und Wissen über die Art und Weise, wie die Layout-Modelle gerendert werden ist erst erforderlich, wenn man mehrdimensionale Kaskaden benötigt oder in der Performance-Königsklasse mitspielen will. Animations, SVG und Co. sind keine Technologien, die bis dahin noch nie existiert haben. Ebenso ist die Erforderlichkeit von Wissen über die Maschinen, die Software übersetzen oder ausführen, nichts Exklusives. Und SEO... bitch please. ;D

Was ich damit sagen will: Webanwendungen (und damit das Feld der Webentwicklung) sind keineswegs komplexer als Software für Desktop- oder Smart-Devices. Ich würde sogar fast das Gegenteil behaupten.

(Ich bin selbst Webentwickler und kenne beide Seiten, inkl. Assembler.)

seba86
2015-03-18, 19:03:23
Wobei Software für Smart-Devices inzwischen zu gefühlt 90% nur Webseiten in einer App sind mit exkl. (phonegap) ^^
Aber hast schon recht... ist halt nur SEHR unübersichtlich!

wirkungsquantum
2015-03-18, 21:48:48
Das wusste ich nicht, danke für die Info. Ich bin nahezu nur in Websprachen aktiv, ich denke das langt schon.

Muss ja für außenstehende verrückt klingen, dass man MINDESTENS 5 Sprachen gleichzeitig beherrschen muss (CSS,HTML,Javascript,MySQL,PHP) um eine Website zu gestalten, die ganzen Erweiterungen (jQuery, Canvas) und Feinheiten (Server, SEO) nichtmal mitgezählt!

Full-JS-Stack um Node.js und MongoDB, schon sind es nur noch drei "Programmiersprachen".

...und ich habe schon den Kommentar erwartet "CSS und HTML sind keine Programmiersprachen!" ^^

MySQL auch nicht... ;D

RattuS
2015-03-19, 02:43:34
MySQL auch nicht... ;D
Angenommen man versteht darunter ausschließlich SQL ohne Stored Procedures und Functions. Aber spätestens bei PL/SQL (Oracle) und T-SQL (MSSQL) muss man das durchaus als Programmiersprache anerkennen. ;)

wirkungsquantum
2015-03-19, 12:50:53
Angenommen man versteht darunter ausschließlich SQL ohne Stored Procedures und Functions. Aber spätestens bei PL/SQL (Oracle) und T-SQL (MSSQL) muss man das durchaus als Programmiersprache anerkennen. ;)

Auch dann ist MySQL ein DBMS und keine Sprache. :cool:

Zur Ausgangsfrage: Auch PHP kann "by reference", dafür einfach das & vor das Argument im Methodenkopf setzen. (http://php.net/manual/en/language.references.pass.php) Das zu benutzen ist auch sehr empfehlenswert und wird etwa von Zend zwangsläufig verlangt (http://framework.zend.com/manual/1.12/en/coding-standard.coding-style.html):

Note: Pass-by-reference is the only parameter passing mechanism permitted in a method declaration.