Maison  >  Article  >  interface Web  >  Comment comprendre les types, le passage de paramètres et l'environnement d'exécution en JavaScript

Comment comprendre les types, le passage de paramètres et l'environnement d'exécution en JavaScript

伊谢尔伦
伊谢尔伦original
2017-07-18 10:36:261321parcourir

Les valeurs de type de base sont : undefined, NUll, Boolean, Number et String. Ces types occupent un espace de taille fixe dans la mémoire. Leurs valeurs sont stockées dans l'espace de la pile et nous y accédons par. valeur.

(1) Type de valeur : valeur numérique, valeur booléenne, nulle, non définie.
(2) Type de référence : objet, tableau, fonction.

Si la valeur attribuée est un type référence, un espace doit être alloué pour cette valeur dans la mémoire tas. Étant donné que la taille de ces valeurs n'est pas fixe (les objets ont de nombreuses propriétés et méthodes), elles ne peuvent pas être enregistrées dans la mémoire de la pile. Mais la taille de l'adresse mémoire est fixe, de sorte que l'adresse mémoire peut être enregistrée dans la mémoire de la pile.

<script type="text/javascript”>
var box = new Object(); //创建一个引用类型
var box = "lee";  //基本类型值是字符串
box.age = 23;  //基本类型值添加属性很怪异,因为只有对象才可以添加属性。
alert(box.age); //不是引用类型,无法输出;
</script>

En bref, la mémoire tas stocke les valeurs de référence et la mémoire pile stocke les valeurs de type fixe.

<script type="text/javascript">
  var man = new Object();//man指向了栈内存的空间地址
  man.name = "Jack";
  var man2 = man;//man2获得了man的指向地址

  alert(man2.name);//两个都弹出Jack
  alert(man.name);
</script>

Copier la valeur de la variable

Regardez l'exemple suivant :

<script type="text/javascript">
  var man = new Object();//man指向了栈内存的空间地址
  man.name = "Jack";
  var man2 = man;//man2获得了man的指向地址

  man2.name = "ming";//因为他们都指向同一个object,同一个name,不管修改谁,大家都修改了
  alert(man2.name);//两个都弹出ming
  alert(man.name);
</script>

De ce qui précède, on peut conclure qu'en termes de copie de variable, il existe également une différence entre les types de base et les types de référence. Les types de base copient la valeur elle-même, tandis que les types de référence copient l'adresse.

Passer des paramètres

Dans ECMAScript, tous les paramètres de fonction sont passés par valeur

<script type="text/javascript">
   function box(num){   //按值传递
     num+=10;
     return num;
   }

   var num = 10;
   var result = box(num);
   alert(result); //如果是按引用传递,那么函数里的num会成为类似全局变量,把外面的number替换掉
   alert(num);  //也就是说,最后应该输出20(这里输出10)
</script>

javascript n'est pas passé par référence s'il y en a. passe par référence, les variables de la fonction seront des variables globales et seront également accessibles en externe. Mais c'est évidemment impossible.

Environnement d'exécution

L'environnement d'exécution est l'un des concepts les plus importants de JavaScript. L'environnement d'exécution définit les variables ou fonctions qui ont accès à d'autres données.

L'environnement d'exécution global est l'environnement d'exécution le plus périphérique. Dans un navigateur Web, l'environnement d'exécution global est l'objet window Par conséquent, toutes les fonctions des variables globales sont créées en tant que propriétés et méthodes de window.


<script type="text/javascript">
   var name = "Jack";      //定义全局变量
   function setName(){
     return "trigkit4";
   }

   alert(window.name);    //全局变量,最外围,属于window属性
   alert(window.setName()); //全局函数,最外围,属于window方法
</script>

Lorsque le code dans l'environnement d'exécution est exécuté, l'environnement est détruit, et les variables et fonctions qui y sont enregistrées sont également détruites s'il s'agit d'un global. environnement, vous devez Il sera détruit une fois tous les programmes exécutés ou la page Web terminée.

Supprimer la variable locale de var

<script type="text/javascript">
   var name = "Jack";
   function setName(){
     name = "trigkit4";  //去掉var变成了全局变量
   }

   setName();
   alert(name);//弹出trigkit4
</script>

En passant des paramètres, c'est aussi une variable locale

<script type="text/javascript">
   var name = "Jack";
   function setName(name){  //通过传参,也是局部变量
     alert(name);
   }

   setName("trigkit4");//弹出trigkit4
   alert(name);//弹出Jack
</script>

Le corps de la fonction également contient des fonctions, seules ces fonctions peuvent accéder à la couche interne de fonctions

<script type="text/javascript">
   var name = "Jack";
   function setName(){
     function setYear(){  //setYear()方法的作用域在setName()内
       return 21;
     }
   }
   alert(setYear());//无法访问,出错 
</script>

, accessible via les méthodes suivantes :

<script type="text/javascript">
   var name = "Jack";
   function setName(){
     function setYear(){  //setYear()方法的作用域在setName()内
       return 21;
     }
     return setYear();
   }
   alert(setName()); //弹出21
</script>

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