Czym jest literalna notacja tablicy w javascript i kiedy należy jej używać?
JSLint daje mi ten błąd:
Problem w linii 11 znak 33: użyj tablicy literalnej notacji [].
var myArray = new Array();
Co to jest tablica dosłowna notacja i dlaczego chce, żebym zamiast niej jej używał?
Pokazuje tutaj, że new Array();
powinno działać dobrze... coś mi umyka?
4 answers
Literalna notacja tablicy to miejsce, w którym definiuje się nową tablicę za pomocą tylko pustych nawiasów. W twoim przykładzie:
var myArray = [];
Jest to "nowy" sposób definiowania tablic i przypuszczam, że jest krótszy/czystszy.
Poniższe przykłady wyjaśniają różnicę między nimi:
var a = [], // these are the same
b = new Array(), // a and b are arrays with length 0
c = ['foo', 'bar'], // these are the same
d = new Array('foo', 'bar'), // c and d are arrays with 2 strings
// these are different:
e = [3], // e.length == 1, e[0] == 3
f = new Array(3); // f.length == 3, f[0] == undefined
Bibliografia: Jaka jest różnica między" Array () " a "[] " podczas deklarowania tablicy JavaScript?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:22
Zobacz też: Co jest nie tak z var x = new Array();
Pomijając argument Crockford, uważam, że wynika to również z faktu, że inne języki mają podobne struktury danych, które używają tej samej składni; na przykład, Python ma listy i słowniki ; zobacz następujące przykłady:
// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]
// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}
Czy nie jest fajnie, że Python jest również poprawnym gramatycznie Javascript? (tak, brakuje dwukropków końcowych, ale nie są one wymagane dla Javascript, albo)
Tak więc, poprzez ponowne wykorzystanie wspólnych paradygmatów w programowaniu, unikamy konieczności ponownego uczenia się czegoś, co nie powinno być konieczne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:44
Pomijając argument Crockford, jsPerf mówi, że jest szybszy. http://jsperf.com/new-vs-literal-array-declaration
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-22 13:28:38
Po spojrzeniu na @ ecMode jsperf, zrobiłem kilka dalszych testów.
Przy użyciu push, aby dodać do tablicy, nowa tablica () jest znacznie szybsza w Chrome:
Http://jsperf.com/new-vs-literal-array-declaration/2
Użycie indeksu do dodania jest nieco szybsze dla [].
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-25 14:22:16