Difference between ES 5 and ES 6

Difference between ES 5 and ES 6

Template literals

`Renu`By using the template literal ( ), it becomes unnecessary to escape special characters and describe consolidation operators. 

Also, within a template literal ${variable}, variables can be described as they are.

ES5

var name = "Renu";
var age = 9;
console.log ("My name is \" "+ name +" \ "and I 'm" + age + "years old.");
// My name is "Renu" and I 'm 9 years old.

ES6

let name = 'Renu';
let age = 9;
console.log(`My name is ${name}, I'm ${age} years old .`);
// My name is "Renu" and I 'm 9years old.

Arrow function

Function declaration in ES 5

There are three methods of function declaration in ES5.

Normal function instruction

function str (arg1, arg2) {
  console.log ('Renu');
}

Function constructor (not used much)

var str = new Function ("arg1", "arg2", "console.log ('Renu')");

Function literals (using anonymous functions)

var str = function (arg1, arg2) {
  console.log ('Renu');
}

Arrow function declaration

In ES 6, it is possible to simply describe function literals by using arrow functions. 

Note that thisthe behaviors described below are different from function literals .

var str = (arg1, arg2) => {
  console.log ('Renu');
}

Arrow functions, only if there is only one argument,

var str = arg1 => console.log (arg1);

()You can omit the argument as in (like in the case of 0 arguments can not be omitted). 

Also, when it fits in one line as in the above example, you {}may omit it.

If the Arrow function returns an object literal,

var str = func => ({id: '8'});

It ()is necessary to enclose the whole as shown in .

Behavioral difference of this

(1) Method call

var obj = {
  value: 10,
  show: function () {
    console.log (this.value); // 10
  }
}
obj.show ();

In a method that is a function associated with an this object, means a calling object. 

That is, the case of the above this are obj are in, this.valuethe teeth obj.valuepoints to.

(2) Function call

function func () {
  var value = 2;
  console.log (this.value) // undefined
}
func ();

When calling an ordinary function as described above, (even function declared in the object) thispoints to global. 

For this reason, this.valuewe do not refer to the value value in the function in the function, and see the global value value (undefined). var value = 1;If you write it outside the function , the result is 1.

(3) Calling the constructor

function Obj (value) {
  this.value = value;
}
var obj = new Obj (0);
console.log (obj.value); // 0

If instantiated in the constructor, thisis the generated instance. 

In the case of this time, thisthe teeth objrefers to.

(4) apply, call, bind

var obj = {
  value: 1,
  show: function () {
    console.log (this.value);
  }
};
var newObj = {
  value: 5
};
obj.show (); // 1
obj.show.call (newObj); // 5
obj.show.apply (newObj); // 5

callapplyBy using methods you can bind the value of the first argument to this. 

That is, newObj = { value: 5 }but thisbecause of, the this.valuevalue 5changes.

Arguments to be passed to the function after the second argument. Pass in ascending callorder, applyas array. Also, bindwhen using methods, write as follows ( thisgenerate a function that binds).

var newFunc = obj.show.bind (newObj);
newFunc ();

(5) Arrow function [ES 6 ~]

In the arrow function, the scope when the function is declared thisis automatically bound.

var obj = {
  value: 10,
  // Method call
  show: function () {
    console.log (this.value); // 10
    // Function call
    function show_ 01 () {
        console.log (this.value); // undefined
    }
    show_ 01 ();
    // Arrow function
    var show _ 02 = () => {
        console.log (this.value); // 10 this refers to obj
    }
    show_02 ();
  }
}
obj.show ();

Declaring variables

var, let, const

In ES6, it became possible to use the varnew letconstsyntax in addition to the conventional one.

let...... Unable 

constto re-declare variables ...... Can not redeclare and reassign variables

varVariable declaration using, for example, does not cause an error even in the following cases.

var x = 10;
x = 15;
console.log (x); // 15
var x = 12;
console.log (x); // 12

let, You can not declare variables with the same name as variables once declared as shown below (you can reassign variables).

let x = 10;
x = 15;
console.log (x); // 15
let x = 12; // Identifier 'x' has already been declared

Also, consthas a role like a constant, and reassignment to a variable initialized once is not allowed.

const x = 10;
console.log (x); // 10
x = 15; // TypeError: Assignment to constant variable.

However, constif you declare a reference type (object or array) with, you can not replace the reference itself, but you can change the contents of the reference.

var ary 1 = () => {
    const aryFalse = [1, 2, 3];
    aryFalse = [4, 5, 6]; // Error
    console.log (aryFalse);
}
ary1 (); // Error
var ary 2 = () => {
    const aryTrue = [1, 2, 3];
    aryTrue [1] = 10;
    console.log (aryTrue);
}
ary2 (); // [1, 10, 3]

Block scope of variables

letconstIf you declare within a block enclosed in {, if}, etc., you can not refer to those variables outside the block.

if (true) {
    var i = 0;
}
console.log (i); // 0
if (true) {
    let j = 10;
}
console.log (j); // ReferenceError
if (true) {
    const k = 100;
}
console.log (k); // ReferenceError

letconstA variable (constant) declared outside the block can be referred to from within the block.

const i = 5;
if (true) {
    sonsole.log (i); // 5
}

module

Before ES 5, basically it was impossible to manage and develop by dividing each JS file for each function. However, with ES 6 you can import another file.

(Postscript) It var obj = obj || {}seems that it is possible to do using a name space pattern .

require

js / - - - script.js 
      |
      --- slider.js

In the case of a file configuration such as

index.html

< script  src = "slider.js" > </ script > 
< script  src = "script.js" > </ script >

I wrote what I was writing,

script.js

var  slider  =  require (. / slider . js );

By doing so, slider.jsyou can import ( ./slidermay be written as). 

In this way, requireyou can read the file itself by using.


(Postscript) require has existed as CommonJS specification since the time of ES 5. However, browser still browserifydoes not support yet ( without conversion process using etc).

import / export

A module is a group of programs for realizing a certain function, and it refers to a group of variables / functions to be passed to another file. 

When loading a module such as a class to be described later, importit exportcan be realized by using and .

When exchanging only one module

Load module

import 'importoldname' from 'File path'

Output of module

export default 'module'

script.js

import  Carousel  from  '. / carousel ' ; 
const  carousel  =  new  Carousel ();

carousel.js

export  default  class  Carousel  { 
    constructor ()  { 
        this . calc (); 
    } 
    calc ()  { 
        console . log ( 10 ); 
    } 
}

When multiple modules are handed over

On the output side, exportattach the things you want to deliver , and the import side should write 

import {a1, a2, ...} from 'file path'

like this.

script.js

import  { multi ,  SuperMulti }  from  './Multiply' ; 
console . log ( multi ( 5 ));  // 50 
console . log ( SuperMulti ( 6 ));  // 600

multiply.js

export  const  i  =  10 ;
export  function  multi ( x )  { 
    return  i  *  x ; 
}
export  function  superMulti ( x )  { 
    return  i  *  x  *  10 ; 
}

If you pass all modules, 

import * as 'object name ' from 'file path'

you can write on the import side . 

In the case of the above example, write as follows.

script.js

import  *  as  lib  from  './multiply' ; 
console . log ( lib . multi ( 5 ));  // 50

class

Class declaration

In ES 5, class definitions realized by using prototype can be written by introducing the class instruction in ES 6.

ES5

var Add = function (arg1, arg2) {
    this.arg1 = arg1;
    this.arg2 = arg2;
};
Add.prototype.calc = function () {
    return this.arg1 + '+' + this.arg2 + '=' + (this.arg1 + this.arg2);
};
var num = new Add (5, 8);
console.log (num.calc ()); // 5 + 8 = 13

ES6

class Add {
    constructor (arg1, arg2) {
        this.arg1 = arg1;
        this.arg2 = arg2;
    }
    calc () {
        return this.arg1 + '+' + this.arg2 + '=' + (this.arg1 + this.arg2);
    }
}
var num = new Add (5, 8);
console.log (num.calc ()); // 5 + 8 = 13

Class inheritance

Class inheritance and overriding supercan now be done using.

ES 5 (premise that Ad is already declared)

var AddSquare = function (arg1, arg2) {
    Add.call (this, arg1, arg2);
};
Object.assign (AddSquare.prototype, Add.prototype);
AddSquare.prototype = {
    calc: function () {// Method can not be omitted
        Add.prototype.calc.call (this);
    },
    calcSquare: function () {
        this.pow = Math.pow (this.arg1 + this.arg2, 2)
        return '(' + this.arg1 + '+' + this.arg2 + ') ^ 2 =' + this.pow;
    }
};
var numSquare = new AddSquare (5, 8);
console.log (numSquare.calc ()); // 5 + 8 = 13
console.log (numSquare.calcSquare ()); // (5 + 8) ^ 2 = 169

ES 6 (Assumption that Ad class is already declared)

class AddSquare extends Add {
    constructor (arg1, arg2) {
        super (arg1, arg2);
    }
    calc () {// Optional for each method
       super.calc ();
    }
    calcSquare () {
        this.pow = Math.pow (this.arg1 + this.arg2, 2)
        return '(' + this.arg1 + '+' + this.arg2 + ') ^ 2 =' + this.pow;
    }
}
var numSquare = new AddSquare (5, 8);
console.log (numSquare.calc ()); // 5 + 8 = 13
console.log (numSquare.calcSquare ()); // (5 + 8) ^ 2 = 169


Puzhukandi M (Pugazh)

Lead Developer - UI/UX | Front End Developer | UI Developer | React JS Developer

5 年

Helpful content to know the difference between es5 and es6

回复

要查看或添加评论,请登录

Dr.MuthuKumaraswamy B的更多文章

  • AI Agents in Enterprise Production: Strategies for Success

    AI Agents in Enterprise Production: Strategies for Success

    AI and ML-driven agents are revolutionizing enterprise environments, but deploying them effectively in production…

  • Inside the Mind of an AI Agent: How It Works and Why It Matters

    Inside the Mind of an AI Agent: How It Works and Why It Matters

    Autonomous agents operate much like humans, relying on fundamental components such as identity, memory, planning, and…

  • Faster way to learn programming languages

    Faster way to learn programming languages

    Getting better at something faster isn't about skipping topics and being half-baked. I'm not showing you any shortcuts.

    3 条评论
  • Explaining AI: What Do Business Leaders Need to Care?

    Explaining AI: What Do Business Leaders Need to Care?

    AI and the challenge of model explainability. The use of artificial intelligence (AI) has become more widespread and is…

  • Vertex-AI

    Vertex-AI

    At the Google I/O developer conference earlier in May, Google Cloud announced the global launch of Vertex AI, a machine…

  • Multi-cloud redefined by Google

    Multi-cloud redefined by Google

    Ask anyone from the IT industry or anyone who observes the IT industry to name the top trends in the industry which…

    1 条评论
  • Axios Vs fetch what should you use

    Axios Vs fetch what should you use

    One of the basic tasks of any web application is to speak with servers through the Hypertext Transfer Protocol (HTTP)…

  • Async JS with Promises from Go

    Async JS with Promises from Go

    In JavaScript, Promise’s are the foundation of async/await. Lets take up an example, consider the below code, This will…

  • JavaScript Objects in Go and WebAssembly

    JavaScript Objects in Go and WebAssembly

    WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Implement your…

  • JavaScript Design Patterns

    JavaScript Design Patterns

    A pattern describes a Challange that happens over and another time in the environment, so describes the core of the…

社区洞察

其他会员也浏览了