javascript学习全过程-----js学习笔记(5)------函数(下)

**

Javascript学习全过程-----js学习笔记目录

**

作用域(全局作用域,局部作用域)

 ==>什么是作用域,就是一个变量可以生效的范围

 ==>变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域

一.全局作用域

 ==>全局作用域是最大的作用域

==>在全局作用域中定义的变量可以在任何地方使用

==>页面打开的时候,浏览器就会自动给我们生成一个全局作用域window

==>这个作用域会一直存在,直到关闭页面就销毁了

==>在函数内部不使用var定义的变量是全局作用域

==>如果一个变量的作用域是全局作用域,这个变量我们叫全局变量

二.局部作用域

 ==>局部作用域就是在全局的作用域下面又开辟出来的一个相对小一些的作用域

==>在局部作用域中定义的变量只能作用在这个局部作用内部使用

==>在js中只有函数能生成一个局部作用域,别的都不行

==>每一个函数,都是一个局部作用域

==>如果一个变量的作用域是局部作用域,这个变量我们叫做局部变量

变量的使用规则(访问规则与赋值规则)

==>有了作用域以后,变量就有了使用范围,也就有了使用规则

==>变量的使用规则分两种:访问规则和赋值规则

一.访问规则

==>当我想读取一个变量的值的时候,我们管这个行为叫访问

            ==>获取变量值的规则:

                    ==>首先:在自己的作用域内部找,如果有,直接拿来使用

                    ==>如果没有,就去上一级作用域找,如果有,就拿来使用

                    ==>如果没有,就去上一级作用域找,如果有,就拿来使用

                    ==>如果到全局作用域都没有找到这个变量,那么就会报错(改变量 is not defined)

 ==>变量的访问规则,也叫作作用域的查找机制

==>作用域的查找机制:只能是向上找,不能是向下找

实例:

        //访问规则
         var num1 = 100;//全局作用域
        function fn(){
             var num2=200;//fn的局部作用域,fn里面的局部变量
            function fn2(){
                 var num3=300;//fn2的局部作用域,fn2里面的局部变量
                console.log(num1);//现在fn2里面,没有找到num1,继续去fn里面找,没有找到,继续去全局作用域找,找到了num1=100
               console.log(num2);//现在fn2里面,没有找到num1,继续去fn里面找,找到了num2=200
               console.log(num3);//现在fn2里面,找到了num3=300
               console.log(cc);//报错:cc is not defined
             }
            fn2()
         }
         fn();//执行fn里面的代码

 

二.赋值规则

 ==>当你想给一个变量赋值的时候,那么就先要找到这个变量,再给他赋值

                ==>变量的赋值规则

                    ==>现在自己作用域内部查找,有就直接赋值

                    ==>没有就去上一级作用域内部查找,有就直接赋值

                    ==>没有就再去上一级作用域内部查找,有就直接赋值

                    ==>如果一直找到全局作用域都没有,那么就把这个变量定义为全局变量,再给他赋值

实例:

        //赋值规则
        function fn(){
            num = 100;//这句话就是要给num赋值,现在fn里面找,没有找到,再去全局作用域找,没有找到,直接把num定义成全局变量
        }
        fn();
        console.log(num);//num是全局变量,并且在fn里面给他赋值成100

 

递归函数(难点)

 ==>什么是递归函数:

            ==>在编程的世界里面,递归就是一个自己调用自己的手段

            ==>递归函数:一个函数内部,调用了自己,循环往复

            ==>其实递归函数和循环很类型

            ==>要实现递归要书写两个内容:

                   ==>一个是满足结束条件的时候结束函数

                   ==>一个是不满足结束条件的时候要执行的代码

对象(object):复杂数据类型

 ==>就是一个复杂数据类型

            ==>其实说是复杂,但是没有很复杂,只不是存储了一些基本数据类型的集合

            ==>var obj = {

                name:"张三",

                age:12,

                vip:false

            }

创建对象的方法

1.字面量方法

var obj = {};   //这就是定义了一个空对象,里面没有任何数据

//向对象中添加成员

        obj.name = "李磊";

        obj.age = 12;

        obj.vip = true;

//打印

        console.log(obj)

2.通过内置构造函数的方式创建对象

var obj1 = new Object();//这就是定义了一个空对象,里面没有任何数据

//向对象中添加成员

        obj1.name = "韩梅梅";

        obj1.sex = "女"

        obj1.banji = "305"

//打印

        console.log(obj1)

 

//Object是js内置给我们的构造函数,用于创建一个对象使用

//获取对象里面的某个值

 console.log(student.name);

了解对象操作

操作三要素

          1.事件源:

                     ==>通过方法:document.getElementById("要获取的标签的id")

                     ==>可以获取事件源标签

           2.事件类型:你做了什么互动操作

                 ==>鼠标事件:

                           ==>单击:onclick

                           ==>双击:ondblclick

                 ==>键盘事件:

                          ==>文本框里面的内容发生了改变:onchange

           3.事件驱动程序:当你在事件源上做了某些事情的时候,页面的反应

                  ==>改变样式

                            ==>标签.style.样式名 = 属性值;

                   ==>改变html标签里面的内容

                           ==>标签.innerHTML = "标签里面的内容"  innerHTML认识html标签

                           ==>标签.innerText = "标签里面的内容"  innerText不认识html标签

                    ==>改变表单元素的内容

                           ==>标签.value = "表单元素里面的内容"




    
    
    Document
    


    

 

你可能感兴趣的:(JavaScript,javascript,js)