11521 sujets

JavaScript, DOM et API Web HTML5

bonsoir
je voudrais savoir quelle est la methode correcte pour declarer les variables

pour l'instant je vois qu'est pratique un chainage avec des , en virant var des la deuxeme (mais suis pas pro)

var mavariable, autrevariable=7;


et jslint n'aime pas il dit: Expected ';' and instead saw ','.

si je fais
var mavariable;
autrevariable=7;


jslint me dit: Undeclared 'autrevariable'.

si je fais
 var mavariable;
var autrevariable=7;


là tout va bien

est-ce vraiment mal d'enchainer les variables avec une virgule comme dans le premier exemple

ou faut il vraiment imperativement mettre toutes les variables les unes apres les autres en repetant var et ;

comment faites vous?
merci
Modifié par nantais (08 Apr 2019 - 19:47)
Bonsoir nantais,

En JavaScript, tu as le choix comme tu l'as mentionné :
var maVariable1 = 0, maVariable2 = 42;

est aussi valable que :
var maVariable1 = 0;
var maVariable2 = 42;

Cependant tu as écris :
var mavariable;
autrevariable=7;

La présence du point-virgule sur la première ligne fais que ta seconde ligne est en erreur ; autreVariable n'a pas été définie au préalable. Ton linter à bien fait son travail!

Aussi, il est préférable (c'est une opinion) d'utiliser la seconde notation, celle qui déclare chaque variable sur une ligne. En effet, cela est plus lisible sur les types des variables que tu déclares successivement, en plus d'être plus facile à refactorer (cela fait moins de supression et d'ajout de caractères au cours de ça).

Enfin, si tu souhaites utiliser la dernière spec de JavaScript (es6), tu peux déclarer tes variables comme suit (attention, la compatibilité avec les navigateurs plus anciens est à checker en amont) :
const maVariable = 0; // maVariable ne pourra pas être re-assignée sans générer d'erreur

ou
let maVariable = 0; // maVariable pourra l'être


Si tu veux approfondir sur ce const et ce let, je t'invite à consulter ces articles :
- const https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/const ;
- let https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/let.

Bonne soirée Smiley smile
Modifié par a_messmaker (08 Apr 2019 - 22:44)
merci pour ta reponse a_messmaker

pourquoi jslint considere t il alors que
var maVariable1 = 0, maVariable2 = 42;

est une erreur?

pour const et let j'ai vu deja passer ca dans mes lectures, je vais creuser

var maVariable; est égale à let maVariable; 

var maVariable = 0; est égale à  const maVariable = 0;


c'est ce que je comprend
c'est ca?
Administrateur
Bonjour,

const définit (déclare ?) une constante : plus jamais tu ne pourras modifier la valeur assignée au départ.
let définit une variable dont la valeur peut changer plus tard (une variable quoi Smiley lol )

Pour la manière d'écrire, je suppose que ton linter râle (warning ou error ?) parce que plusieurs déclarations sont sur 1 seule ligne. Perso j'ai l'habitude de :

var a = 5,
(indentation)b,
(indentation)c = 42;


mais si je faisais plus de JavaScript, je préférerais probablement la seconde notation dont parle a_messmaker. Une ligne, une instruction et ne pas chercher à "optimiser" ce genre de trucs alors qu'on est en train de l'écrire, ajouter, modifier, etc
Il devrait y avoir un message d'erreur affiché, non ? Avec le nom de la règle de lint qui provoque une erreur, lien vers plus d'explications.
Je connais bien plus stylelint pour les (S|Post)CSS(-in-JS) et oh ils ont détaillé chacune des règles existantes… Et des valeurs possibles pour chacune. Il y a une config par défaut, il y a des configs toutes prêtes (des équipes de dév de boîtes connues) et on peut tout modifier soit globalement, soit au niveau d'un fichier soit d'un bloc ou d'une ligne !
Modifié par Felipe (09 Apr 2019 - 12:31)
merci Felipe je regarde ton lien

par contre si tu mets sur plusieurs lignes ce que tu dis jlint rale encore pareil
teste tu vas voir
nantais a écrit :
merci Felipe je regarde ton lien

par contre si tu mets sur plusieurs lignes ce que tu dis jlint rale encore pareil
teste tu vas voir


Oui mais cela ne veut pas dire que c'est faux, la règle de jslint privilégie la cohérence et la lisibilité , en particulier pour les projets à long terme.

entre ça :
var variable1 = "value 1", variable2 = "value 2", variable4 = "value 4", 
    variable5 = "this"; 
var variable6 = "starts"; 
var variable7 = "to get", variable8 = "hard", variable9 = "to read";

et ça
var variable1 = "value 1";
var variable2 = "value 2"; 
var variable4 = "value 4";
var variable5 = "this";
var variable6 = "starts";
var variable7 = "to get";
var variable8 = "hard";
var variable9 = "to read";


il n'y a pas photo au niveau de la lisibilité
Modifié par JENCAL (10 Apr 2019 - 10:16)
bon si c'est juste un probleme de lisibilite ca me va
par contre j'ai aussi ceci avec jslint
Unexpected 'for'.
for (i in j) {


var s = function(t, e) {
    var j = fuse.search(t);
    var f = {};
    var key;
    var i;
    for (i in j) {
        key = j[i].properties.n;
        f[key] = e[key];
    }
    return f;
};


que faire? est ce là encore anecdotique