var t = [1,2,3] oK(t) // 0: 1 // 1: 2 // 2: 3 // length: 3 t[7] = 666 oK(t) // 0: 1 // 1: 2 // 2: 3 // 7: 666 // length: 8 write(t[6]) // undefined
Huom: Alkioille, joille ei aseteta arvoa, ei tarvitse (välttämättä) tehdä tilanvarausta: Kuten kaikki jo varmaan muistavat, olemattoman kentän arvon kysely palauttaa undefined!
Jos indeksoidaan hyvin suurella indeksillä, tapahtuu kiinnostavaa. Vertaa seuraavia:
var t = [1,2,3] t[700000000] = 666 oK(t) // 0: 1 // 1: 2 // 2: 3 // 700000000: 666 // length: 700000001 //--------ja
var t = [1,2,3] t[70000000000] = 666 oK(t) // 0: 1 // 1: 2 // 2: 3 // length: 3 // 70000000000: 666 // --------Opimmeko tästä jotakin? Ja jos niin mitä?
var t = [1,2,3] write(t[2]) // 3 oK(t) // 0: 1 // 1: 2 // 2: 3 // length: 3 // -------- t.length = 2 write(t[2]) // undefined oK(t) // 0: 1 // 1: 2 // length: 2 // -------- t.length = 8 write(t[2]) // undefined oK(t) // 0: 1 // 1: 2 // 2: 3 // length: 8 //--------
var t = [1,2,3]; write(t.length); // 3 t[10000] = "kissa"; write(t.length); // 10001 write(t[10000]); // kissa write(t[7000]); // undefined t.length = 2; write(t.length); // 2 write(t[2]); // undefined write(t[-1]); // undefined write(t["abc"]); // undefined var o = new Object(); write(t[o]); // undefined t[-1] = 234; write(t[-1]); // 234 t["abc"] = {a:21, b:34} write(t["abc"]); // [object Object] write(t["abc"].b); // 34 t[o] = 3.14; write(t[o]); // 3.14 write(t[undefined]); // undefined t[undefined] = 666; write(t[undefined]); // 666 t[NaN] = "appelsiini"; write(t[NaN]); // appelsiini
var a = [1,2,3]; var b = new Array(1,2,3); var c = Array(1,2,3);
var a = new Array(3); write(a.length); // 3 var b = Array("3"); write(b.length); // 1
var t = [1,2,3,4,5,6,7, "kissa"]; for (var i=0; i<t.length; ++i) t[i] += 2; write(t); // 3,4,5,6,7,8,9,kissa2(Huomaa kissa2!)
var t = [1,2,3,4,5,6,7, "kissa"]; var i=0; t.forEach(function () {t[i] += 2, ++i}); write(t); // 3,4,5,6,7,8,9,kissa2
var t = [1,2,3,4,5,6,7, "kissa"]; var i; for (i in t) t[i] += 2; write(t); // 3,4,5,6,7,8,9,kissa2
var t = [1,2,3,4,5,6,7, "kissa"]; var i; for (i of t) i += 2; write(t); // 1,2,3,4,5,6,7,kissaTässä muuttujaan i vain sijoitellaan laskettuja arvoja. Ja i käyttäytyy toistolauseen alialgoritmissa arvoparametrin tapaan. Se siis ei ole viite taulukon alkioon vaan se on alkion arvo.
var t = [1,2,3,4,5,6,7]; var i=0; t.forEach(function () {t[i] *= 2, ++i}); write(t); // 2,4,6,8,10,12,14 var t = [1,2,3,4,5,6,7]; var i=0; Array.forEach(t, function () {t[i] *= 2, ++i}); write(t); // 2,4,6,8,10,12,14
var m = [[1,2,3], [4,5,6]]; write(m[1][0]); // 4 var sum=0; for (var i=0; i<m.length; ++i) for (var j=0; j<m[i].length; ++j) sum += m[i][j]; write(sum); // 21
var m = new Array(2); for (i = 0; i < m.length; i++) { m[i] = new Array(3); for (j = 0; j < m[i].length; j++) { m[i][j] = 3*i+j +1; } }
Wed Oct 23 2013 13:23:47 GMT+0300 (EEST)
write(new Date("December 25, 1995 13:30:00")); // Mon Dec 25 1995 13:30:00 GMT+0200 (Eastern European Standard Time) write(new Date("Feb 31, 1995 13:30:00")); // Fri Mar 03 1995 13:30:00 GMT+0200 (Eastern European Standard Time) write(new Date("Feb 69, 1995 13:30:00")); // Invalid DateKovin anglosaksiselta vaikuttaa tuo parametri, mutta viisauttakin siihen näkyy rakennetun.
write(new Date(2013,9,23)); // Wed Oct 23 2013 00:00:00 GMT+0300 (Eastern European Summer Time) write(new Date(2013,9,23, 13, 43, 35)); // Wed Oct 23 2013 13:43:35 GMT+0300 (Eastern European Summer Time)
Tutkitaanpa vaikka kauanko juuri tämän (new Date()).getTime()-aksessorin 1000000-kertainen suoritus kuluttaa aikaa:
var alkuaika = (new Date()).getTime(); for (var i=0; i<1000000; ++i) var x = (new Date()).getTime(); var loppuaika = (new Date()).getTime(); write("Aikaa kului " + (loppuaika-alkuaika) + " ms."); // esim. 348, 351, 355, 354, ...
Aika nopeaa. (Suoritus työpöytäkoneellani 20.11.2018 klo 13:26)
var f = new Function("a","b", "return a+b") write(f(2,5)) // 7 var g = Function("k", "t", "var i; for (i=0; i<k; ++i) write(t)") g(3, "tööt") // tööt // tööt // tööt