JS基础部分(二)

JavaScript 函数部分

p113-114 函数导读

概念:可能会经常重复用到一些代码,把他封装起来,方便使用。

目的:让大量代码重复使用

p115-116 函数的使用

函数的声明:

function 函数名(参数列表){

​ 代码块

}

调用函数一定要带上小括号 例如:函数名()

p117-118 函数的参数

形参:形式参数 声明中

实参:实际参数 调用中

参数之间用逗号隔开

p119 函数形参和实参个数不匹配的情况

1.个数匹配。正常

2.实参的个数多于形参

​ 会取到形参的个数

3.如果实参的格式小于形参的个数

​ num2 是一个变量但是没有接受值,多的形参定义为undefined就是underfined,结果是NaN

p120-125 函数的应用

Return 的注意事项

  1. return 后面的代码不会被执行
  2. return 只能返回一个值
  3. return num1,num2; return返回最后一个值
  4. 返回多个值的时候,可以通过数组 return [num1,num2];
  5. 函数有返回值,返回return 后面的值,没有的话返回undefined/

p126 arguments的使用

我们不知道到底需要多少个形式参数,用arguments来代替,用来获取参数,里面存储了传递的所有实参(是一种伪类数组(1.具有数组的length 属性 2.按照索引的方式进行存取 3.他没有真正数组的一些方法))

我们按照数组遍历的方法来使用arguments的长度

    <script>
        function getMax(){
            var max = arguments[0];
            for(var i=1;i<arguments.length;i++){
                if(arguments[i]>max){
                    max=arguments[i];
                } 
            }
            return max;
        }
        console.log(getMax(1,2,3,4,12,61));
    </script>

p128 翻转数组

function reverse(arr){
           var newArr = [];
           for(var i = arr.length-1;i>= 0 ;i--){
                newArr[newArr.length]=arr[i];
           }
           return newArr;
       }
       var arr1=reverse([1,2,3,4,5]);
       console.log(arr1);

p133函数的声明方式

1.利用函数关键字自定义函数

2.函数表达式(匿名函数)

var fun = function(arg){
 console.log('我是一个函数表达式');
 console.log(arg);
}

p134-139 作用域,全局变量,局部变量

  1. 代码名字在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突
  2. js的作用域,在(es6)之前:全局作用域 局部作用域
  3. 全局作用域,在整个script标签内,或者整个外部文件的时候
  4. 局部作用域:在函数内部就是局部作用域,指代函数内部起效果和作用

全局/局部变量

  1. 全局变量:浏览器关闭时才会销毁,比较占用内存
  2. 局部变量:函数运行之后就会被销毁

JS现阶段没有块级作用域,es6里面才有作用域,for{} if {}这些都属于块级作用域。

作用域链(就近原则)

  1. 函数内部再来一个函数,会有个新的作用域
  2. 内部函数是可以访问外部函数的
  3. 从内部函数->外部函数->全局变量, 一层层往往外面去找。采取的是就近原则。

预解析

JS代码是由浏览器中的解释器来执行的,JS解释器在运行JS代码的时候分为两步:预解析和代码啊执行

  1. 预解析

    js引擎会把js里面所有的var还有function提升到当前作用域的最前面

    • 分为变量预解析(变量提升)和函数预解析
    • 变量(所有用var声明的,包括方法返回)提升:就是把所有的变量声明提升到当前作用域最前面 不提升赋值操作
    • 函数提升:函数表达式,他的调用必须写在调用的后面

2.代码执行

按照代码书写的顺序从上往下执行

注意很容易弄错

<script>
        f1();
        console.log(c);
        console.log(b);
        console.log(a);
        function f1(){
            var a=b=c=9;
            // 这里相当于var a=9;b=9;c=9;这里面b,c是全局变量
            console.log(a);
            console.log(b);
            console.log(c);
        }       
    </script>
原文地址:https://www.cnblogs.com/li33/p/13129901.html