zoukankan      html  css  js  c++  java
  • 函数细节

     1 <script>
     2         //有参函数与无参函数
     3         /*无参函数*/
     4         function add(){
     5             var a = 10;
     6             var b = 20;
     7             var c = a + b;
     8             console.log(c);
     9         }
    10         add();
    11 
    12         /*有参函数*/
    13         function add2(d,e){
    14             var f = d + e;
    15             console.log(f);
    16         }
    17         // add2(11,22);
    18         // var a = +prompt("第一个加数");
    19         // var b = +prompt("第二个加数");
    20         // add2(a,b);
    21 
    22         // 如果实参少于形参,没被赋值的形参就是undefined,可以在函数内部给他默认一个值,比如用if语句判断一下,给他赋值。
    23         // 如果实参多于形参,正常情况下多余的实参会被忽略掉;
    24         // 如果不想被忽略掉,想得到多余的实参,并参与运算怎么办?
    25         // 需要借助函数内部的特殊对象:arguments    这是内置的对象(此对象是一个类数组对象:他是一个对象。
    26         // 但是他的用法有点像数组,所以称之为类数组对象),只能在函数内部使用,外部无法使用
    27 
    28         /*不定长参数的函数*/
    29         function add3(){
    30             var sum = 0;
    31             for (var i = 0; i < arguments.length; i++){
    32                 sum += arguments[i];
    33             }
    34             return sum;
    35         }
    36 
    37         var g = add3(1,2,3,4);
    38         console.log(g);
    39 
    40         function add4(h, k){
    41             console.log(h, k);  //3  5
    42             console.log(arguments[0], arguments[1]);  //3  5
    43             h = 22;
    44             console.log(h, k);  //22  5
    45             console.log(arguments[0], arguments[1]);  //22  5
    46             //结论:arguments对象的数据和形参之间是相互映射的关系,两者指向同一个地址空间,任何一方发生改变,都会影响另一方跟着改变。
    47         }
    48 
    49         add4(3,5,6,7,8,9);
    50 
    51 
    52 
    53         // 函数的重载:即同一个作用域下的两个同名函数。(在两个不同文件中出现同名函数,只要他们不整合到一起,就没有影响)
    54         /*
    55         在很多编程语言中,在同一个作用域中允许出现两个或多个同名不同参的函数,且互不影响,这种现象叫重载。
    56         但是在JavaScript中,如果出现两个或多个同名函数(不论参数的个数是否相同),后面的都会覆盖前面的同名函数。
    57         */
    58         function welcome(){
    59             console.log("Hello!!!!!!");
    60         }
    61 
    62         function welcome(name){
    63             console.log("Hello",name);
    64         }
    65 
    66         welcome();  //Hello undefined
    67         welcome("小明");  //Hello 小明
    68 
    69 
    70 
    71         //作用域
    72         /*
    73         ES5中只存在两种变量的作用域:(即可使用的范围)
    74         1、全局变量     函数外部
    75         2、局部变量     函数内部
    76             最佳实践:尽量减少全局变量,避免命名冲突。因为如果两个人在同一个脚本的
    77         不同函数中使用了相同的全局变量名,就很容易导致不可预测的结果和难以察觉的 bug。
    78             一定记得使用 var 声明变量,避免一个变量未经声明就来使用。否则即使是在函数内部,变量也会自动提升为全局变量。
    79         */
    80         var hi = "Hello";
    81         function come(){
    82             var msg = "Hello!!!";
    83             console.log(msg);  //ok,没问题。可访问的
    84             console.log(hi);  //ok,没问题。可访问的
    85         }
    86 
    87         come();
    88         console.log(hi);  //没问题,可访问的
    89         console.log(msg);  //报错,不可访问的
    90         //结论:变量查找原则:就近原则。 如果找不到,就向其父级作用域寻找,直到找到全局作用域还没找到就报错。
    91         //      变量访问:里面可以访问到外面,外面无法访问里面。
    92         //      相同作用域下定义同名变量,后面的会覆盖掉前面的。  不同作用域下定义同名变量,互不影响。
    93     </script>
  • 相关阅读:
    01
    王天宇0703作业
    0706作业
    0705作业
    0704作业
    0703作业
    数据库死锁语句脚本
    项目问题 : 尝试读取或写入受保护的内存。这通常指示其他内存已损坏
    工厂模式(Factory Patter)
    修改DevExpress中英文提示,将英文改为中文
  • 原文地址:https://www.cnblogs.com/Army-Knife/p/13358700.html
Copyright © 2011-2022 走看看