Maison  >  Article  >  interface Web  >  Explication détaillée des exemples de comparaison entre les types de données simples et les types de données complexes en JavaScript

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

伊谢尔伦
伊谢尔伦original
2017-07-21 13:58:353537parcourir

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


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


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

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;
    }

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();

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;
      }

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


var fnName;
      console.log(fnName(1,2));
      fnName = function (a,b) {
        return a + b;
      }

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);
        }

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!

Déclaration:
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