ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の型、パラメータの受け渡し、実行環境を理解する方法

JavaScript の型、パラメータの受け渡し、実行環境を理解する方法

伊谢尔伦
伊谢尔伦オリジナル
2017-07-18 10:36:261337ブラウズ

基本的な型の値は、未定義、NUll、Boolean、Number、String です。これらの型はメモリ内の固定サイズの領域を占有し、値によってアクセスします。

(1) 値の型: 数値、ブール値、null、未定義。
(2) 参照型: オブジェクト、配列、関数。

参照型の値を割り当てる場合は、ヒープ メモリ内でこの値用の領域を割り当てる必要があります。このような値のサイズは固定されていないため (オブジェクトには多くのプロパティとメソッドがあります)、スタック メモリに保存できません。ただし、メモリアドレスのサイズは固定されているため、メモリアドレスをスタックメモリに保存できます。

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

つまり、ヒープメモリには参照値が格納され、スタックメモリには固定型の値が格納されます。

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

変数値をコピー

次の例を見てください:

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

上記から結論付けることができます: 変数のコピーに関しては、基本型と参照型も異なりますが、基本型は値自体をコピーします。参照型 コピーされるのはアドレスです。

パラメータの受け渡し

ECMAScript では、すべての関数パラメータは値によって渡されます。

<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 は参照によって渡されません。参照渡しがある場合、関数内の変数は外部からもアクセスできます。しかし、これは明らかに不可能です。

実行環境

実行環境は、JavaScript の最も重要な概念の 1 つであり、他のデータにアクセスできる変数または関数を定義します。

グローバル実行環境は、Web ブラウザーではウィンドウ オブジェクトであるため、グローバル変数のすべての関数はウィンドウのプロパティとメソッドとして作成されます。


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

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

実行環境内のコードが実行されると、その環境は破壊され、その中に保存されている変数や関数も破壊されますが、グローバル環境であれば、すべてのプログラムが実行されるまで破壊されません。またはWebページが完成します。

varのローカル変数を削除します

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

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

パラメータを渡すことでローカル変数にもな​​ります

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

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

関数本体にも関数が含まれているのはこの関数のみです

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

経由でアクセスできます。次の方法:

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

以上がJavaScript の型、パラメータの受け渡し、実行環境を理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。