JavaScript ES5


Innehållsförteckning

    Visa innehållsförteckning

ECMAScript 2009, även känd som ES5, var den första större revisionen av JavaScript.

Detta kapitel beskriver de viktigaste egenskaperna hos ES5.

ES5 funktioner

  • "använd strikt"

  • Sträng[nummer] åtkomst

  • Flerlinjesträngar

  • String.trim()

  • Array.isArray()

  • Array forEach()

  • Array map()

  • Array filter()

  • Array reduce()

  • Array reduceRight()

  • Array varje()

  • Array some()

  • Array indexOf()

  • Array lastIndexOf()

  • JSON.parse()

  • JSON.stringify()

  • Date.now()

  • Datum till ISOString()

  • Datum till JSON()

  • Fastighetsgetters och -sättare

  • Reserverade ord som egendomsnamn

  • Objektmetoder

  • Object defineProperty()

  • Funktion bind()

  • Efterföljande kommatecken


Webbläsarstöd

ES5 stöds fullt ut i alla moderna webbläsare:

Chrome IE Edge Firefox Safari Opera
Yes 9.0 Yes Yes Yes Yes

Direktivet "använd strikt".

"use strict" definierar att JavaScript-koden ska köras i "strict mode".

Med strikt läge kan du till exempel inte använda odeklarerade variabler.

Du kan använda strikt läge i alla dina program. Det hjälper dig att skriva renare kod, som att hindra dig från att använda odeklarerade variabler.

"use strict" är bara ett stränguttryck. Gamla webbläsare kommer inte att skapa ett fel om de inte förstår det.

Läs mer i JS Strict Mode.


Tillgång till fastigheter på strängar

Metoden charAt() returnerar tecknet vid en angiven index (position) i en sträng:

Exempel

var str = "HELLO WORLD";
str.charAt(0);            // returns H

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript String Methods</h2>

<p>The charAt() method returns the character at a given position in a string:</p>

<p id="demo"></p>

<script>
var str = "HELLO WORLD";
document.getElementById("demo").innerHTML = str.charAt(0);
</script>
</body>
</html>

ES5 tillåter tillgång till egendom på strängar:

Exempel

var str = "HELLO WORLD";
str[0];                   // returns H

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript String Methods</h2>

<p>ECMAScript 5 allows property acces on strings:</p>

<p id="demo"></p>

<script>
var str = "HELLO WORLD";
document.getElementById("demo").innerHTML = str[0];
</script>
</body>
</html>

Egendomstillgång på sträng kan vara lite oförutsägbar.

Läs mer i JS String Methods.


Strängar över flera linjer

Exempel

 "Hello \
Dolly!";

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Strings</h1>

<p>
You can break a code line within a text string with a backslash.
</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = "Hello \
Dolly!";
</script>

</body>
</html>

Metoden\kanske inte har universellt stöd.
Äldre webbläsare kan behandla utrymmena runt omvänd snedstreck annorlunda.
Vissa äldre webbläsare gör det tillåt inte mellanslag bakom tecknet \.

Ett säkrare sätt att bryta upp en sträng bokstavligt, är att använda sträng tillägg:

Exempel

 "Hello " + 
"Dolly!";

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Strings</h1>

<p>The safest way to break a code line in a string is using string addition.</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = "Hello " +
"Dolly!";
</script>

</body>
</html>

Reserverade ord som egenskapsnamn

ES5 tillåter reserverade ord som egenskapsnamn:

Objekt Exempel

 var obj = {name: "John", new: "yes"}

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h1>ECMAScript 5</h1>

<p>ECMAScript 5 allows reserved words as property names.</p>
<p id="demo"></p>

<script>
var obj = {name: "John", new: "yes"};
document.getElementById("demo").innerHTML = obj.new;
</script>

</body>
</html>



Sträng trim()

Metoden trim() tar bort blanksteg från båda sidor av en sträng.

Exempel

var str = "       Hello World!        ";
alert(str.trim());

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Strings</h1>
<h2>The trim() Method</h2>

<p id="demo"></p>

<script>
let text1 = "     Hello World!     ";
let text2 = text1.trim();

document.getElementById("demo").innerHTML =
"Length text1 = " + text1.length + "<br>Length text2 = " + text2.length;
</script>

</body>
</html>

Läs mer i JS String Methods.



Array.isArray()

Metoden isArray() kontrollerar om ett objekt är en array.

Exempel

function myFunction() {
  var fruits = ["Banana", "Orange", "Apple", "Mango"];
  var x = document.getElementById("demo");
    x.innerHTML = Array.isArray(fruits);
}

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The isArray() Method</h2>

<p>Click the button to check if "fruits" is an array.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction() {
  var fruits = ["Banana", "Orange", "Apple", "Mango"];
  var x = document.getElementById("demo");
  x.innerHTML = Array.isArray(fruits);
}
</script>

</body>
</html>

Läs mer i JS Arrays.


Array forEach()

Metoden forEach() anropar en funktion en gång för varje matriselement.

Exempel

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);

function myFunction(value) {
   
txt = txt + value + "<br>"; 
}

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.forEach()</h2>

<p>Calls a function once for each array element.</p>

<p id="demo"></p>

<script>
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
document.getElementById("demo").innerHTML = txt;

function myFunction(value) {
  txt = txt + value + "<br>"; 
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array map()

Detta exempel multiplicerar varje matrisvärde med 2:

Exempel

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
  
function myFunction(value) {
  return value * 2;
}

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.map()</h2>

<p>Creates a new array by performing a function on each array element.</p>

<p id="demo"></p>

<script>
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);

document.getElementById("demo").innerHTML = numbers2;

function myFunction(value, index, array) {
  return value * 2;
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array filter()

Det här exemplet skapar en ny array från element med ett värde större än 18:

Exempel

 var numbers = [45, 4, 9, 16, 25];
var over18 = 
  numbers.filter(myFunction);
function myFunction(value) {
  return value > 18;
} 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.filter()</h2>

<p>Creates a new array with all array elements that passes a test.</p>

<p id="demo"></p>

<script>
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);

document.getElementById("demo").innerHTML = over18;

function myFunction(value, index, array) {
  return value > 18;
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array reduce()

Detta exempel hittar summan av alla tal i en matris:

Exempel

 var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);
  
function myFunction(total, value) {
  
  return total + value;
} 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.reduce()</h2>

<p>This example finds the sum of all numbers in an array:</p>

<p id="demo"></p>

<script>
var numbers = [45, 4, 9, 16, 25];
var sum = numbers.reduce(myFunction);

document.getElementById("demo").innerHTML = "The sum is " + sum;

function myFunction(total, value, index, array) {
  return total + value;
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array reduceRight()

Detta exempel hittar också summan av alla tal i en matris:

Exempel

 var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);
  
function myFunction(total, value) {
  return total + value;
} 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.reduceRight()</h2>

<p>This example finds the sum of all numbers in an array:</p>

<p id="demo"></p>

<script>
var numbers = [45, 4, 9, 16, 25];
var sum = numbers.reduceRight(myFunction);

document.getElementById("demo").innerHTML = "The sum is " + sum;

function myFunction(total, value) {
  return total + value;
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array every()

Det här exemplet kontrollerar om alla värden är över 18:

Exempel

 var numbers = [45, 4, 9, 16, 25];
var allOver18 = 
  numbers.every(myFunction);
function myFunction(value) {
  return 
  value > 18;
} 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.every()</h2>

<p>The every() method checks if all array values pass a test.</p>

<p id="demo"></p>

<script>
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);

document.getElementById("demo").innerHTML = "All over 18 is " + allOver18;

function myFunction(value, index, array) {
  return value > 18;
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array some()

Det här exemplet kontrollerar om vissa värden är över 18:

Exempel

 var numbers = [45, 4, 9, 16, 25];
var allOver18 = 
  numbers.some(myFunction);
function myFunction(value) {
  return 
  value > 18;
} 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Array.some()</h2>

<p>The some() method checks if some array values pass a test.</p>

<p id="demo"></p>

<script>
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.some(myFunction);

document.getElementById("demo").innerHTML = "Some over 18 is " + allOver18;

function myFunction(value) {
  return value > 18;
}
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array indexOf()

Sök i en array efter ett elementvärde och returnerar dess position.

Exempel

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The indexOf() Method</h2>

<p id="demo"></p>

<script>
const fruits = ["Apple", "Orange", "Apple", "Mango"];
let position = fruits.indexOf("Apple") + 1;

document.getElementById("demo").innerHTML = "Apple is found in position " + position;
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


Array lastIndexOf()

lastIndexOf() är samma som indexOf(), men söker från slutet av arrayen.

Exempel

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The lastIndexOf() Method</h2>

<p id="demo"></p>

<script>
const fruits = ["Apple", "Orange", "Apple", "Mango"];
let position = fruits.lastIndexOf("Apple") + 1;

document.getElementById("demo").innerHTML = "Apple is found in position " + position;
</script>

</body>
</html>

Läs mer i JS Array Iteration Methods.


JSON.parse()

En vanlig användning av JSON är att ta emot data från en webbserver.

Föreställ dig att du fick den här textsträngen från en webbserver:

'{"name":"John", "age":30, "city":"New York"}'

JavaScript-funktionen JSON.parse() används för att konvertera texten till ett JavaScript-objekt:

var obj = JSON.parse('{"name":"John", "age":30, "city":"New 
  York"}');

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>Creating an Object from a JSON String</h2>

<p id="demo"></p>

<script>
const txt = '{"name":"John", "age":30, "city":"New York"}'
const obj = JSON.parse(txt);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
</script>

</body>
</html>

Läs mer i vår JSON-handledning.


JSON.stringify()

En vanlig användning av JSON är att skicka data till en webbserver.

När data skickas till en webbserver måste data vara ett snöre.

Föreställ dig att vi har detta objekt i JavaScript:

var obj = {name:"John", age:30, city:"New York"};

Använd JavaScript-funktionen JSON.stringify() för att konvertera den till en sträng.

var myJSON = JSON.stringify(obj);

Resultatet blir en sträng efter JSON-notationen.

myJSON är nu en sträng och redo att skickas till en server:

Exempel

var obj = {name:"John", age:30, city:"New York"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>Create a JSON string from a JavaScript object.</h2>
<p id="demo"></p>

<script>
const obj = {name: "John", age: 30, city: "New York"};
const myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;
</script>

</body>
</html>

Läs mer i vår JSON-handledning.


Date.now()

Date.now() returnerar antalet millisekunder sedan noll datum (1 januari. 1970 00:00:00 UTC).

Exempel

var timInMSs = Date.now();

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Date.now()</h2>

<p>Date.now() is new in ECMAScript 5 (2009):</p>

<p id="demo1"></p>
<p id="demo2"></p>

<script>
document.getElementById("demo1").innerHTML = Date.now();
var d = new Date();
document.getElementById("demo2").innerHTML = d.getTime();
</script>
</body>
</html>

Date.now() returnerar samma sak som getTime() utfört på ett Date-objekt.

Läs mer i JS Dates.


Datum toISOString()

Metoden toISOString() konverterar ett Date-objekt till en sträng med ISO-standardformatet:

Exempel

const d = new Date();
document.getElementById("demo").innerHTML = d.toISOString();

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Dates</h1>
<h2>The toISOString() Method</h2>

<p>Convert a date to a string using the ISO standard:</p>
<p id="demo"></p>

<script>
const d = new Date();
document.getElementById("demo").innerHTML = d.toISOString();
</script>

</body>
</html>

Datum toJSON()

toJSON() konverterar ett Date-objekt till en sträng, formaterad som ett JSON-datum.

JSON-datum har samma format som ISO-8601-standarden: ÅÅÅÅ-MM-DDTHH:mm:ss.sssZ:

Exempel

d = new Date();
document.getElementById("demo").innerHTML = d.toJSON();

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Date.toJSON()</h2>

<p id="demo"></p>

<script>
d = new Date();
document.getElementById("demo").innerHTML = d.toJSON();
</script>

</body>
</html>

Fastighetsgetters och -sättare

ES5 låter dig definiera objektmetoder med en syntax som ser ut som att hämta eller ställa in en fastighet.

Det här exemplet skapar en getter för en egenskap som heter fullName:

Exempel

 // Create an object:
var person = {
  firstName: 
  "John",
  lastName : "Doe",
  get 
  fullName() {
    
  return this.firstName + " " + this.lastName;
  }
};
// Display data from the 
  object using a getter:
document.getElementById("demo").innerHTML = 
  person.fullName; 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Getters and Setters</h2>

<p>Getters and setters allow you to get and set properties via methods.</p>

<p>This example creates a getter for a property called fullName.</p>

<p id="demo"></p>

<script>
// Create an object:
var person = {
  firstName: "John",
  lastName : "Doe",
  get fullName() {
    return this.firstName + " " + this.lastName;
  }
};
// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.fullName;
</script>

</body>
</html>

Det här exemplet skapar en setter och en getter för språkegenskapen:

Exempel

 var person = {
  firstName: "John",
  
  lastName : "Doe",
  language : "NO",
  
  get lang() {
    return this.language;
  },
  set lang(value) {
    
  this.language = value;
  }
};
// Set an object 
  property using a setter:
person.lang = "en";
// Display data from the 
  object using a getter:
document.getElementById("demo").innerHTML = 
  person.lang;
 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Getters and Setters</h2>

<p>Getters and setters allow you to get and set properties via methods.</p>

<p>This example creates a setter and a getter for the language property.</p>

<p id="demo"></p>

<script>
// Create an object:
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO",
  get lang() {
    return this.language;
  },
  set lang(value) {
    this.language = value;
  }
};
// Set an object property using a setter:
person.lang = "en";
// Display data from the object using a getter:
document.getElementById("demo").innerHTML = person.lang;
</script>

</body>
</html>

Det här exemplet använder en inställare för att säkra uppdateringar av versaler av språk:

Exempel

 var person = {
  firstName: "John",
  
  lastName : "Doe",
  language : "NO",
  set lang(value) {
    
  this.language = value.toUpperCase();
  }
};
// Set an object 
  property using a setter:
person.lang = "en";
// Display data from the 
  object:
document.getElementById("demo").innerHTML = 
  person.language;
 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Getters and Setters</h2>

<p>Getters and setters allow you to get and set properties via methods.</p>

<p>This example has a modified setter to secure upper case uppdates of language.</p>

<p id="demo"></p>

<script>
// Create an object:
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "",
  set lang(value) {
     this.language = value.toUpperCase();
  }
};
// Set an object property using a setter:
person.lang = "en";
// Display data from the object:
document.getElementById("demo").innerHTML = person.language;
</script>

</body>
</html>

Lär dig mer om Gettes och Setters i JS Object Accessors


Object.defineProperty()

Object.defineProperty() är en ny objektmetod i ES5.

Den låter dig definiera en objektegenskap och/eller ändra en egenskaps värde och/eller metadata.

Exempel

 // Create an Object:
var person = {
  firstName: 
  "John",
  lastName : "Doe",
  language : "NO", 
};

  // Change a Property:
Object.defineProperty(person, "language", {
    
  value: "EN",
  writable : true,
  enumerable : true,
  configurable : true
});
// 
  Enumerate Properties
var txt = "";
for (var x in person) {
    
  txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = 
  txt;
 

Prova själv →

<!DOCTYPE html>
<html>

<head>
<meta content="text/html; charset=iso-8859-2" http-equiv="Content-Type">
</head>

<body>

<h2>JavaScript defineProperty()</h2>

<p id="demo"></p>

<script>
// Create an Object:
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO", 
};
// Change a Property:
Object.defineProperty(person, "language", {
  value: "EN",
  writable : true,
  enumerable : true,
  configurable : true
});
// Enumerate Properties
txt = "";
for (var x in person) {
  txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Nästa exempel är samma kod, förutom att den döljer språkegenskapen från uppräkning:

Exempel

 // Create an Object:
var person = {
  firstName: 
  "John",
  lastName : "Doe",
  language : "NO", 
};

  // Change a Property:
Object.defineProperty(person, "language", {
    
  value: "EN",
  writable : true,
  enumerable : false,
  configurable : true
});
// 
  Enumerate Properties
var txt = "";
for (var x in person) {
    
  txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = 
  txt;
 

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript defineProperty()</h2>

<p id="demo"></p>

<script>
// Create an Object:
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO", 
};
// Change a Property:
Object.defineProperty(person, "language", {
  value: "EN",
  writable : true,
  enumerable : false,
  configurable : true
});
// Enumerate Properties
txt = "";
for (var x in person) {
  txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Det här exemplet skapar en setter och en getter för att säkra uppdateringar av versaler av språk:

Exempel

 // Create an Object:
var person = {
  firstName: "John",
    lastName : 
  "Doe",
  language : "NO"
};
// Change a Property:
  Object.defineProperty(person, "language", {
  get : function() { return 
  language },
  set : function(value) { language = value.toUpperCase()}
});

  // Change Language
person.language = "en";
// Display Language
  document.getElementById("demo").innerHTML = person.language;

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript defineProperty()</h2>

<p id="demo"></p>

<script>
// Create an Object:
var person = {
  firstName: "John",
  lastName : "Doe",
  language : "NO"
};
// Change a Property:
Object.defineProperty(person, "language", {
  get : function() { return language },
  set : function(value) { language = value.toUpperCase()}
});
// Change language
person.language = "en";
// Display language
document.getElementById("demo").innerHTML = person.language;
</script>

</body>
</html>

E5 Objektmetoder

ES5 lade till många nya objektmetoder till JavaScript:

Hantera objekt

// Create object with an existing object as prototype
Object.create(parent, donor)

// Adding or changing an object property
Object.defineProperty(object, property, descriptor)

// Adding or changing object properties
Object.defineProperties(object, descriptors)

// Accessing Properties
Object.getOwnPropertyDescriptor(object, property)

// Returns all properties as an array
Object.getOwnPropertyNames(object)

// Accessing the prototype
Object.getPrototypeOf(object)

// Returns enumerable properties as an array
Object.keys(object)

Skydda objekt

// Prevents adding properties to an object
Object.preventExtensions(object)

// Returns true if properties can be added to an object
Object.isExtensible(object)

// Prevents changes of object properties (not values)
Object.seal(object)

// Returns true if object is sealed
Object.isSealed(object)

// Prevents any changes to an object
Object.freeze(object)

// Returns true if object is frozen
Object.isFrozen(object)

Läs mer i Object ECMAScript5.


Funktion Bind()

Med metoden bind() kan ett objekt låna en metod från ett annat objekt.

Detta exempel skapar 2 objekt (person och medlem).

Medlemsobjektet lånar fullnamnsmetoden från personobjektet:

Exempel

const person = {
  firstName:"John",
  lastName: "Doe",
    fullName: function () {
    return this.firstName + " " + this.lastName;
    }
}

const member = {
  firstName:"Hege",
  lastName: "Nilsen",
}

let fullName = person.fullName.bind(member);

Prova själv →

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Function bind()</h1>

<p>This example creates 2 objects (person and member).</p>
<p>The member object borrows the fullname method from person:</p> 

<p id="demo"></p>

<script>
const person = {
  firstName:"John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}

const member = {
  firstName:"Hege",
  lastName: "Nilsen",
}

let fullName = person.fullName.bind(member);

document.getElementById("demo").innerHTML = fullName();
</script>

</body>
</html>

Läs mer i Funktion bind().


Efterföljande kommatecken

ES5 tillåter avslutande kommatecken i objekt- och arraydefinitioner:

Objekt Exempel

person = {
  firstName: "John",
  lastName: "
Doe",
	age: 46,
}

Exempel på matris

points = [
  1,
  5,
  10,
  25,
  40,
  100,
];

VARNING!!!

JSON tillåter inte avslutande kommatecken.

JSON-objekt:

 //
  Allowed:
var person = '{"firstName":"John", "lastName":"Doe", 
  "age":46}'
JSON.parse(person)
// Not allowed:
var person = '{"firstName":"John", 
  "lastName":"Doe", "age":46,}'
JSON.parse(person)

JSON-arrayer:

   //
    Allowed:
points = [40, 100, 1, 5, 25, 10]
// Not allowed:
points = 
    [40, 100, 1, 5, 25, 10,]