Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des exemples de comparaison entre les types de données simples et les types de données complexes en JavaScript

伊谢尔伦
Libérer: 2017-07-21 13:58:35
original
3529 Les gens l'ont consulté

Types de données en JavaScript

Types de données simples (de base) : Nombre, Chaîne, Booléen, Non défini, Null

Types de données complexes (de référence) : Objet, Tableau, Date, fonction, etc.

Ce qui suit est une introduction à la différence entre les types de données simples (de base) et les types de données complexes (de référence) :

Types de données simples : stocker des valeurs ​​directement sur la pile             

Types de données complexes : stockage des références sur la pile

Après avoir compris les méthodes de stockage des deux types de données ci-dessus, vous pouvez distinguer la différence entre les deux. Vous pouvez faire les exercices suivants :


var a =10;
  var b = a;
  //问:当改变a的值后,b的值是否发生改变
  a=20;
  console.log(b);  // 10
Copier après la connexion


var s1 = new Object();
var s2 = s1;
//问:改变s1的属性后,s2相同的属性是否改变
s1.name = "mh";
console.log(s2.name);    //mh
Copier après la connexion


function f2(arr)
     {
       arr = [9,8,7,6,5];//产生新的对象
       arr[0]=-100;
     }
     var array = [1,2,4,7,5];
     f2(array);
     console.log(array[0]);//  1
Copier après la connexion

Promotion des variables, déclaration de fonction en JavaScript et portée des variables

Tout d'abord, regardons la question d'entretien suivante :


var num = 10;
    fun();
    function fun()
    {
      console.log(num);
      var num =20;
    }
Copier après la connexion

Avant d'apprendre, le la réponse serait 10 directement, apprenez maintenant Le concept de précompilation en JavaScript connaît le concept de promotion du mot clé var et le concept de déclaration de fonction Vous savez que le code ci-dessus est équivalent au code suivant :


.

var num;//全局作用域  遇到var和function 提升
     function fun() {
       var num ;  //局部做用户 遇到var 提升
       console.log(num);
       num =20;
     }
    num = 10;
    fun();
Copier après la connexion

Regardez ci-dessous Cette question :


//问题:为什么会出现下面的错误?
      //Uncaught TypeError:fnName is not a function

      console.log(fnName(1,2));
      var fnName = function (a,b) {
        return a + b;
      }
Copier après la connexion

Le code ci-dessus est équivalent au code suivant :


var fnName;
      console.log(fnName(1,2));
      fnName = function (a,b) {
        return a + b;
      }
Copier après la connexion

Vous pouvez voir Parce que la fonction est sur le côté droit du signe égal, seule var sera promue et l'erreur « Uncaught TypeError : fnName is not a function » sera signalée.

Pour comprendre la portée des variables, vous pouvez voir le code suivant :


f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1() {
          var a = b = c = 20;
          console.log(c);
          console.log(b);
          console.log(a);
        }
Copier après la connexion

Pour var a=b=c=20; d'affectation continue, dans Only a sera re-déclaré dans la portée locale, tandis que les portées de b et c sont des portées globales. Par conséquent, seul a dans la portée globale signale l'erreur « Uncaught ReferenceError : a n'est pas défini ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal