11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour
suite a la lecture d'un ancien post et l 'évolution des versions js ..je me pose quelques questions sur la syntaxe arrow !!


use 'strict';
var obj = {
  i: 10,
  b: () => console.log(this.i, this),
  c: function() {    console.log(this.i, this);  }
  }

obj.b(); // affiche undefined, Window
obj.c(); // affiche 10, Object {...}




0- pourquoi écrire console> 'use strict' ; dans chrome retourne console> "use strict " ?
Est ce que chrome possède un vérificateur lexical avant toute exécution !
1 -comment appelle t on la ligne que contient b et c : fonction , méthode ,expression ,déclaration instruction ?
2 -quelle est la différence entre une fonction et une méthode ?
3 -pourquoi this et this.i retourne des valeurs différentes entre b et c ?
4 dans quelle cas on utilisera la syntaxe b ou la syntaxe c ?

Merci
Modifié par 75lionel (08 Oct 2016 - 23:40)
Bonjour,

0. Pour activer le mode strict. Voir https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Strict_mode

2. Je te suggère de revoir tes bases en programmation orientée objet si tu as des doutes là-dessus.

3. Parce que this n'est pas bindé dans les arrow functions. Cela signifie en gros que dans une arrow function, this vaut toujours la même chose que ce qu'il valait dans la fonction parente.
Quand tu définis une fonction à l'aide du mot-clé function par contre, un nouveau contexte est créé.

4. Techniquement, les deux sont plus ou moins interchangeables si on maîtrise la différence évoquée au point 3.
En pratique, on utilise les arrow functions dans le cadre de fonctions callback, pour des fonctions courtes qui font quelques instructions tout au plus, ou quand on veut absolument obtenir son comportement spécifique du this. En-dehors de fonctions passées en paramètre à d'autres fonctions, en principe, on évite. LE comportement spécial du this est souhaitable dans certains cas, mais pas dans la majorité des cas; il est spécialement utile/pratique avec des callbacks justement.