1.作用域和值类型引用类型的传递

1.作用域:
  1.全局作用域
    -直接写在script标签中的代码(不是在函数中 var 的变量)拥有
    -在页面中的任意部分都可以访问到
  2.函数作用域
    -在函数中 var 的变量拥有
    -在函数中,不使用 var 声明的变量都会成为全局变量
<script type="text/javascript">
   //全局作用域
   var num1 = 55;
   var num2 = 66;//100

   function f1(a, b) {
      //局部作用域
      // var a=55;    这行和下一行都是看不见的。在没有调用函数之前,只var a 和 b ,就是声明了参数 a 和 b.
      // var b = 66;
      a = 100;//100
      b = 100;//100
      num2 = 100;//100   这里其实是改变了全局变量 num2
      console.log(a);//100
      console.log(b);//100
      console.log(num2);//100
   }
   //  55    66
   f1(num1, num2);
   console.log(num1);//55
   console.log(num2);//100
   console.log(a);// 报错
</script>

 2.值类型引用类型的传递:

<script type="text/javascript">
        
    //第2题  值类型和引用类型的传递

    function Person(name, age, salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    function f1(personName) {
        //var personName = p;
        personName.name = "ls";
        personName = new Person("aa", 18, 10);  //定义一个新person
        console.log(personName);   //Person {name: "aa", age: 18, salary: 10}
    }

    var p = new Person("zs", 18, 1000);
    console.log(p.name);           //zs
    f1(p);
    console.log(p.name);           //ls
    console.log(p);                //Person {name: "ls", age: 18, salary: 1000}

</script>            
原文地址:https://www.cnblogs.com/FlyingLiao/p/9863179.html