2021-05-17 函数和作用域

1.arguments的使用

    当我们不确定有多少哥参数传递的时候,可以用arguments 来获取。在javascript中,arguments实际上它是当前甘薯的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中储存了传递的所有实参。

    arguments展示形式是一组伪数组,因此可以进行遍历。

        具有length属性

        按索引方式存储数据

        不具有数组的push,pop等方法

2.函数的两种声明方式

    1.利用函数关键字自定义函数(命名函数)

    2.函数表达式(匿名函数)      var 变量名 = function(){}

3.作用域

    3.1 javascript作用域 : 就是代码名字(变量)在某个范围内起作用和效果 目的是为了 提高程序的可靠性更重要的是减少命名冲突

    3.2  js的作用域(es6)之前 : 全局作用域  、局部作用域

    3.3  全局作用域 :整个script标签 或者是一个单独的js 文件、在全局作用域下声明的变量叫做全局变量

    3.4  局部作用域(函数作用域)在函数内部就是局部作用域这个变量只在函数内部起效果和作用、 在局部作用域下声明的变量叫做局部变量

注意: 函数的形参也可以看做是局部变量 、在函数内不适用var声明的变量也是全局作用域。

    3.5 执行效率     

        全局变量只有浏览器关闭的时候才会销毁,比较占内存资源

        局部变量 当我们程序执行完毕就会销毁,比较节约内存资源

4.作用域 链

    只要是代码,就至少有一个作用域

    写在函数内部的局部作用域

    如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域

    根据在内部函数可以访问外部函数变量的这种机制,用链式查找 决定那些数据能被内部函数访问,就称作作用域链

5.预解析

    5.1   我们js引擎运行js分为两步 : 预解析 代码执行

        (1)。 预解析 js引擎会把js 里面所有的var 还有function提升到当前作用域的最前

        (2)。代码执行 按照代码书写的顺序从上往下执行

    5.2 预解析分为 变量预解析(变量提升)和函数预解析(函数提升)

        (1)。变量提升 就是把所有的变量声明提升到当前的作用域最前面  不提升赋值操作。

        (2)函数提升 就是把所有的函数声明提升到当前作用域的最前面  不调用函数


6对象

    6.1什么是对象?

        对象是有属性赫尔方法组成的。

            属性:事物的特征,在对象中用属性来表示

            方法 : 事物的行为, 在对象中用方法来表示    

    6.2 为什么需要对象

        保存一个值时,可以使用变量,保存多个值时可以使用数组。如果要保存一个完整的信息,这时 就需要对象了。

    6.3 创建对象的三种方式

        (1)。利用对象字面量创建对象( ) var obj = {}

                1.里面的属性或者方法我们采取键值对的形式

                2.多个属性或者方法中间用逗号隔开的

                3. 方法冒号后面跟的是一个匿名函数

        (2)。 使用对象

                1.调用对象的属性     采取  对象名。属性名

                2. 另一种方法    对象名【‘属性名’】

                3. 调用对象的方法   obj.函数名 

        (3) 变量、属性、函数、方法的区别

            变量和属性的相同的 他们都是用来存储数据的

            变量  单独声明并赋值  使用的时候直接写变量名 单独存在

            属性  在对象里面的不需要声明的  使用的时候必须是 对象。属性

        (4)函数和方法的相同点、都是实现某种功能 做某件数

                函数是单独声明 并且调用的  函数名()单独存在的

                方法 在对象里面 对象名。方法名();

        (5) 利用 new object  创建对象

                1. 我们是利用 等号 =  赋值的方法  添加对象的属性和方法

                2. 每个属性和方法之间用 分号结束

        (6)利用构造函数创建对象

                构造函数 : 是一种特殊的函数,主要用来初始化对象 , 即为对象成员变量赋初始值,它总与new 运算符一起使用。

                1. 构造函数名字首字母要大写

                2.我们构造函数不需要return 就可以返回结果

                3.我们调用构造函数 ,必须使用 new

                4.我们只要new 构造函数  调用函数就创建一个对象 {}

                5. 我们的属性和方法前面必须添加 this

        (7)构造函数和对象

                构造函数,抽取了对象的公共部分,封装到了函数里面,它泛指某一大类(class)

                创建对象 , 特指某一个,通过new 关键字创建对象的过程我们也称为对象实例化    

    7. new关键字

            new关键字执行过程

                1.在内存中创建一个新的空对象。

                2.让this指向这个新的对象

                3. 执行构造函数里面的代码,给这个新对象添加属性和方法

                4.返回这个新对象(所以构造函数里面不需要return)。

    8.遍历对象属性    

            for...in 用于对数组或者对象的属性镜像循环操作。for(var 变量  in   对象) 变量输出的是属性名      对象【变量】得到的是属性值 

        简易计算机

var sum = prompt(

        '1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n 请输入你的选项'

      );

      var num1 = parseFloat(prompt('请输入第一个值'));

      var num2 = parseFloat(prompt('请输入第二个值'));

      var bb = [num1, num2];

      function getSum(aa, bb) {

        while (sum != 5) {

          switch (aa) {

            case '1':

              alert('值为' + (bb[0] + bb[1]));

              sum = prompt(

                '1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n 请输入你的选项'

              );

              break;

            case '2':

              alert('值为' + (bb[0] - bb[1]));

              sum = prompt(

                '1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n 请输入你的选项'

              );

              break;

            case '3':

              alert('值为' + bb[0] * bb[1]);

              sum = prompt(

                '1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n 请输入你的选项'

              );

              break;

            case '4':

              alert('值为' + bb[0] / bb[1]);

              sum = prompt(

                '1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n 请输入你的选项'

              );

              break;

            case '5':

              break;

            default:

              alert('请输入正确指令');

              sum = prompt(

                '1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n 请输入你的选项'

              );

              break;

          }

        }

        alert('已退出');

      }

      getSum(sum, bb);

你可能感兴趣的:(2021-05-17 函数和作用域)