第六章 函数及变量作用域

一,函数

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

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

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


  • 隐式全局变量 在函数体内部没有通过var声明的变量
       function fn(){
                    xxx = 10;
                    yyy = 20;
                }     
                console.log(yyy)

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

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

调用之后

三,变量的生命周期

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

            都是从被声明开始  
            全局   结束:当页面关闭以后删除 
            局部   结束:当前程序运行完之后删除 
            //尽量使用局部变量  全局多占内存 
  • 释放内存
    如何释放内存,有两种方法
    1.delete()(手动删除 不是所有的牛奶都叫特仑苏 不是所有的变量都可以被删除)
 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.函数的声明提升 

                可以先调用 然后再写函数 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心亿点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值