第六章 函数及变量作用域

2021-04-08  本文已影响0人  扶光_

一,函数

函数的定义:是由时间驱动或者当他调用的时候可以重复使用的代码块

翻译成人话来讲:就是写一段代码,将代码封装起来,用的时候去调用即可
函数的三种写法

1. 1.函数声明定义
  格式:        
   function函数名(参数,参数){
                console.log(9999);
              }
    //之后必须进行调用才可以执行函数里面的代码 
     函数名();
1.2带参数的函数调用

            function fn1(x,y){  //括号里面是形参  相当于x是4 y是6 
                console.log(x+y);
                 }
              fn1(4,6); //括号里面的值写实参 就是真实的数  
            
带参数的函数调用
1.3带返回值的函数调用

关键字 return

 //把函数当做一个值考虑 return之后的语句不再执行 
function fn2(a,b){
                return a + b;
            }
                fn2(6,3);

但是向以上那样写并不会输出出来 因为renturn返回的是一个值 并没有输出语句,所以我们需要在调用外面套一个console.log的控制台输出

无结果

写法:

 function fn2(a,b){
                return a + b;
            }
            
            console.log(fn2(6,3));

结果会返回一个9 没问题!


return

二,变量的作用域

什么是变量的作用域?
也就是说,变量可以访问的区域

2.1 局部变量 ---->只能在局部调用的变量

比如在函数里面创建的变量 只能在函数里面访问得到

如 我们在函数里面定义一个变量 ,然后在全局去访问这个变量会不会访问得到

function fn(){
                var x = 666;
            }
            console.log(x);

他会显示如下图 x is not defined 找不到这个变量x


局部变量只能自己访问得到

他只能写在自己的函数体内可以生效

  function fn(){
                var x = 666;
                console.log(x);
            }
           
            fn();


2.2全局变量

全局变量分为显示全局变量隐式全局变量
那么什么是显示全局变量和隐式全局变量呢?
显示全局变量就是有var声明的变量 并且在全局都可以访问的到
而隐式全局变量就是前面没有var声明的变量 在函数体内被调用过之后才可以转换为全局变量

                      var xx = "爷爷";     //在函数体在定义这种的变量就是全局变量
                        function fn4(){
                            console.log(xx);
                        }
                        fn4();

那么下面这种写法 看看他会输出爷爷还是输出50呢?

                      var xx = "爷爷";               //定义一个全局变量爷爷
                        function fn4(){
                            var xx = 50;              //定义一个局部变量50
                            console.log(xx);
                        }
                        fn4();
全局变量
结果为什么是50呢???

注意点 因为 //他会优先在当前作用域查找变量 如果当前找不到他会逐层向外查找
所以他会输出50


       function fn(){
                    xxx = 10;
                    yyy = 20;
                }     
                console.log(yyy)
隐式变量

这样是调用不到的 只有当函数调用完一次 变量才变成全局变量 可以访问到,

 function fn(){
                    xxx = 10;
                    yyy = 20;
                }     
                fn();
                console.log(yyy)

调用之后

三,变量的生命周期

什么是变量的声明周期
说白了就是这些变量怎么来的 怎么没得。

            都是从被声明开始  
            全局   结束:当页面关闭以后删除 
            局部   结束:当前程序运行完之后删除 
            //尽量使用局部变量  全局多占内存 
 var h = 1;
                delete(h); 
                 console.log(h);
 //还是可以输出出来 通过var声明的显示全局变量 不可以delete删除
delete

如果是不加var声明的 可以被删除

                 j = 1;
                delete(j);
                console.log(j);   //is not defined  可以被删除 
不加var声明的
2.null 可以删除var 声明的变量
             var x = 2; 
              x= null;
              console.log(x);
null

扩展 变量和函数的声明提升

var声明的变量他会直接拿在上面,他会先取变量

            1. 变量的声明提升 

                console.log(x);
                var x = 10;   //undefined 
                //会优先把所有的变量提升到顶部 
                2.函数的声明提升 

                可以先调用 然后再写函数 
上一篇 下一篇

猜你喜欢

热点阅读