Literały

Literały

Literałów używa się w celu przedstawiania wartości w JavaScript. Są one ustalonymi wartościami (a nie zmiennymi), które dosłownie podajesz w swoim skrypcie. Ten fragment opisuje następujące typy literałów:

Literały tablicy

Literał tablicy jest listą składającą się z zera lub większej liczby wyrażeń, z których każdy reprezentuje element tablicy, a które zamknięte są w nawiasach kwadratowych ([]). Tablica tworzona za pomocą literału tablicy zostaje zainicjalizowana podanymi wartościami jako jej elementami, a jej długość jest ustalone według liczby podanych argumentów.

Poniższy przykład tworzy tablicę kawy z trzema elementami i o długości trzy:

kawy = ["Arabica", "Columbiana", "Zbożowa"]

Uwaga Literał tablicy jest typem inicjatora obiektu. Zobacz Używanie inicjatorów obiektu.

Jeśli tablica została utworzona przy pomocy literału w skrypcie najwyższego poziomu, JavaScript interpretuje tablicę za każdym razem, gdy przelicza wyrażenie zawierające literał tablicowy. Dodatkowo literał użyty w funkcji jest tworzony przy każdym wywołaniu funkcji.

Literały tablicy są także obiektami Array. Zobacz obiekt Array, aby uzyskać więcej informacji o obiektach Array.

Dodatkowe przecinki w literale tablicy

Nie musisz określać w literale tablicy wszystkich elementów. Jeśli postawisz kolejno dwa przecinki, zostanie utworzony obiekt array z pustym miejscem dla niesprecyzowanych elementów. Poniższy przykład tworzy tablicę ryba:

ryba = ["Piła", , "Młot"]

Tablica ta posiada dwa elementy z wartościami i jeden pusty element (wartość ryba[0] to "Piła", ryba[1] jest niezdefiniowana, a ryba[2] to "Młot"):

Jeśli na końcu listy elementów umieścisz dodatkowy przecinek, jest on ignorowany. W poniższym przykładzie długość tablicy jest równa trzy. Nie istnieje mojaLista[3]. Wszystkie inne przecinki w liście wskazują nowy element.

mojaLista = ['dom', , 'szkoła', ];

W kolejnym przykładzie długość tablicy jest równa cztery; nie zdefiniowano wartości dla mojaLista[0] i mojaLista[2].

mojaLista = [ , 'dom', , 'szkoła'];

W ostatnim przykładzie długość tablicy wynosi cztery i brakuje mojaLista[1] i mojaLista[3]. Tylko ostatni przecinek jest ignorowany. Jest on opcjonalny.

mojaLista = ['dom', , 'szkoła', , ];

Literały logiczne

Typ logiczny posiada dwie wartości: true i false.

Nie wolno mylić pierwotnych wartości logicznych true i false z wartościami prawda i fałsz (true/false) obiektu logicznego. Obiekt logiczny jest obiektem opakowującym pierwotnego typu danych logicznych. Zobacz obiekt Boolean, aby uzyskać więcej informacji.

Literały całkowite

Liczby całkowite mogą być wyrażane jako dziesiętne (podstawa 10), szesnastkowe (podstawa 16) i ósemkowe (podstawa 8). Dziesiętny literał całkowity składa się z sekwencji cyfr bez czołowego 0 (zera). Czołowe 0 (zero) w literale całkowitym wskazuje na literał ósemkowy; Czołowe 0x (lub 0X) wskazuje na literał szesnastkowy. Liczby szesnastkowe mogą zawierać cyfry od 0 do 9 oraz litery a-f lub A-F. Ósemkowe literały całkowite mogą zawierać tylko cyfry od 0 do 7.

Ósemkowe literały całkowite są wycofywane i zostały usunięte ze 3 edycji standardu ECMA-262. JavaScript 1.5 wciąż wspiera je dla kompatybilności wstecznej.

Przykładami literałów całkowitych są:

0, 117 i -345 (dziesiętne, podstawa 10)
015, 0001 i -077 (ósemkowe, podstawa 8) 
0x1123, 0x00111 i -0xF1A7 (szesnastkowe, "hex" lub podstawa 16)

Literały zmiennoprzecinkowe

Literały zmiennoprzecinkowe mogą mieć następujące części:

  • Liczbę dziesiętną całkowitą mogąca posiadać znak (poprzedzona przez "+" lub "-"),
  • Znak dziesiętny ("."),
  • Ułamek (kolejna liczba dziesiętna),
  • Wykładnik.

Wykładnik stanowi "e" lub "E", po którym następuje liczba całkowita mogąca posiadać znak (poprzedzona przez "+" lub "-"). Literały zmiennoprzecinkowe muszą posiadać co najmniej jedną cyfrę; muszą także posiadać "e" (lub "E") bądź znak dziesiętny.

Przykładami literałów zmiennoprzecinkowych są 3.1415, -3.1E12, .1e12 i 2E-12.

Ściślej, składnia jest następująca:

[cyfry][.cyfry][(E|e)[(+|-)]cyfry]

Na przykład:

3.14
2345.789
.3333333333333333333

Literały obiektu

Literał obiektu stanowi ujęta w nawias klamrowy ({}) lista składająca się z zera lub większej liczby par, które stanowią nazwa własności obiektu oraz przypisana jej wartość. Nie powinno się używać literału obiektu na początku instrukcji. Doprowadzi to do wystąpienia błędu lub nieoczekiwanych zachowań, gdyż { zostanie zinterpretowany jako początek bloku.

Poniżej podany jest przykład literału obiektu. Pierwszy element obiektu auto definiuje własność mojeAuto; drugi element, własność pobierzAuto, wywołuje funkcję (TypyAut("Polonez")); trzeci element, własność specjalne, używa istniejącej zmiennej (Sprzedaz).

var Sprzedaz = "Toyota";

function TypyAut(nazwa) {
   if(nazwa == "Polonez")
      return nazwa;
   else
      return "Przykro nam, ale nie sprzedajemy marki " + nazwa + ".";
}

auto = {mojeAuto: "Caro", pobierzAuto: TypyAut("Polonez"), specjalne: Sprzedaz}

document.write(auto.mojeAuto); // Caro
document.write(auto.pobierzAuto); // Polonez
document.write(auto.specjalne); // Toyota

Dodatkowo, możesz użyć literału znakowego lub liczbowego jako nazwy własności lub zagnieździć obiekt wewnątrz innego. Ilustruje to poniższy przykład.

auto = {wieleAut: {a: "Saab", b: "Jeep"}, 7: "Mazda"}

document.write(auto.wieleAut.b); // Jeep
document.write(auto[7]); // Mazda

Zauważ:

foo = {a: "alfa", 2: "dwa"}
document.write (foo.a)    // alfa
document.write (foo[2])   // dwa
//document.write (foo.2)  // Błąd: brakuje ) po liście argumentów
//document.write (foo[a]) // Błąd: a nie jest zdefiniowane
document.write (foo["a"]) // alfa
document.write (foo["2"]) // dwa

Literały znakowe

Literały znakowe to zero lub więcej znaków zamkniętych w podwójnych (") lub pojedynczych (') znacznikach cytatu. Łańcuch znaków musi być ograniczony przez znaczniki tego samego typu, a więc obydwa pojedyncze lub obydwa podwójne znaki cytatu. Poniżej umieszczono przykłady literałów znakowych:

  • "bla"
  • 'bla'
  • "1234"
  • "jedna linia \n kolejna linia"
  • "kot Ali"

Możesz wywołać dowolną metodę obiektu String na wartości literału znakowego - JavaScript automatycznie skonwertuje literał znakowy do tymczasowego obiektu String, wywoła metodę, a następnie pozbędzie się tymczasowego obiektu String. Możesz również użyć własności String.length z literałem znakowym:

  • "kot Ali".length

Powinieneś użyć literału znakowego, chyba że potrzebujesz szczególnie obiektu String. Zobacz obiekt String, aby uzyskać szczegółowe informacje o obiektach String.

Używanie specjalnych znaków w łańcuchach

Dodatkowo oprócz znaków zwykłych możesz także włączyć do łańcuchów specjalne znaki, tak jak pokazano w przykładzie:

"pierwsza linia \n następna linia"

Poniższa tabela przedstawia znaki specjalne, które możesz użyć w łańcuchach znaków JavaScript.

Znak Znaczenie
\b Backspace
\f Nowa strona
\n Nowa linia
\r Powrót karetki
\t Tabulacja
\v Tabulacja pionowa
\' Apostrof lub pojedynczy cudzysłów
\" Podwójny cudzysłów
\\ Lewy ukośnik (\).
\XXX Znaki z kodowaniem Latin-1 określone przez do trzech cyfrósemkowych XXX pomiędzy 0 i 377. Na przykład \251 jest sekwencją ósemkową dla symbolu copyright.
\xXX Znaki z kodowaniem Latin-1 określone przez dwie cyfry szesnastkowe XX pomiędzy 00 i FF. Na przykład \xA9 jest szesnastkową sekwencją dla symbolu copyright.
\uXXXX Znak Unicode określony przez cztery cyfry szesnastkowe XXXX. Na przykład \u00A9 jest sekwencją Unicode dla symbolu copyright. Zobacz Sekwencje ucieczki do Unicode.

Tabela 2.1: Znaki specjalne w JavaScript

Znaki ucieczki

Dla znaków niewymienionych w tabeli powyżej, poprzedzający znak backslash jest ignorowany, ale użycie tego jest wycofywane i powinno być unikane.

Możesz wstawić znak cudzysłowu wewnątrz łańcucha znaków poprzedzając go znakiem backslash. Znane jest to jako kodowanie (escaping) znaków cudzysłowu. Na przykład:

var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service."
document.write(quote)

Rezultatem tego będzie:

He read "The Cremation of Sam McGee" by R.W. Service.

Aby użyć literału backslash w łańcuchu znaków, musisz zastosować znak backslash. Na przykład, aby przydzielić plikowi ścieżkę c:\temp do łańcucha znaków, użyj następującej konstrukcji:

var home = "c:\\temp "


Autorzy i etykiety dokumentu

Autorzy tej strony: Takenbot, Bedi, Mgjbot, Ptak82, Diablownik, KrucaFuks
Ostatnia aktualizacja: Mgjbot,