JavaScript 学习 第五天

day05 函数

1、函数

函数:是由事件驱动的或者当他被调用时可重复使用的代码块

document.onclick = function(){

}

function sum(){}

sum()

2、函数声明及使用范围

普通的声明方式:

​ 1、声明函数 function 函数名(){

​ 代码块

​ }

​ 2、调用函数 函数名()

表达式声明:

​ var 变量 = function(){ }

​ 变量名();

//声明
function sum(){
   console.log("我使用一个函数");
}
//调用
sum();
    
//表达式声明
var f = function(){
   console.log("表达式声明");
}
f();
使用场景:

作为事件处理函数:document.onclick = function(){}

封装:有具体功能的

代码复用:重复的代码存放在函数中,需要的是调用

3、函数参数

函数参数:当函数中出现不确定的值,就可以使用参数

形参:形式参数 function 函数名(a) {} a:形参

实参:实际参数 函数名(10) 10:实参

function s(a){//var a; a = 10
  console.log(a);
}
s(10);
s(20);
1、参数个数

一个参数 : function 函数名(a)

多个参数 : function 函数名(a,b) //var a,b

参数个数确定不了,不写参数,用arguments,是函数内置的一个对象,表示实参集合

function f(){
console.log(arguments); //Arguments(3) [10, 20, 30] 实参集合,类数组
         console.log(arguments.length);//长度
         console.log(arguments[1]);
     }
     f(10,20,30);
2、参数类型

函数的参数类型:所有的js数据类型都能做完函数参数(number,string,boolan,null,undefined,object,array,function)

一般null和undefined不会做为函数参数,没有意义,有时候还会报错

选择排序

for(var i = 0;i<array.length;i++){
          //i = 0; arr[i] = 4
          for(var j = i+1;j<array.length;j++){
              //比较
              if(array[i]>array[j]){
                var temp = array[i];
                array[i] = array[j];
                array[j] = temp;
              }
          }
      }

4、函数注意问题

1.arguments和参数是一个
 ~~~

function f1(a){
arguments[0] = 30;
console.log(a); //30

        a = 50;
        console.log(arguments); //50
    }
    f1(10);
 ~~~
2、同名会覆盖
function f2(){
    console.log("函数1");
}
function f2(){
    console.log("函数2");
}
f2();
3、变量函数同名照样会覆盖
function f3(){
   console.log("分");
}
var f3 = 10;
console.log(f3);
//f3(); //f3 is not a function

4、实参个数不同形参个数

function f4(a,b){ //a = 10 b = 20 
    console.log(a+b); 
}
f4(10,20,30); //实参个数大于形参个数,多了不管
f4(10); //实参个数小于形参个数,没有被赋值参数就是undefined

5、作用域与变量提升

1、作用域

作用域:变量或者函数的有效使用范围

​ 全局变量:在函数外声明的变量/函数,叫全局变量/函数,会一直存储在内存中,可以在任何地方被修改和访问

​ 局部变量:在函数内声明的变量/函数,叫局部变量/函数,只能在函数内部使用,出了函数的{}就会被回收

​ 作用域链:是js中的一种查找机制,先找自己,自己依次往上找,一直到全局,全局没有则是is not defined

全局变量:
var a = 10;
     console.log(a);//10

     function fun(){
         console.log(a);
         a = 100;
     }   
     fun();
     console.log(a); //100
局部变量:
function fun2(){
         var c = 10;
         console.log(c);
     }
     fun2();
     //console.log(c); //c is not defined 
作用域链:
var s = 10;
     function out(){
         var s = 20;
         function inner(){
             var s = 30;
             console.log(s);
         }
         inner();
     }

     out();
变量提升:

浏览器在解析js的,至少有其中两步

预解析:

​ var : 在js仓库中先存储变量,var a a=undefined

​ function:在js仓库中会存储整个函数 f = function(){}

​ 逐步执行:

//1.找var
    console.log(a); //undefined
    var a = 10;
    console.log(a);

    //2.找function
    console.log(f);
    function f(){
        //fdfdfd
        console.log("ffff");
    }

    console.log(sum);
    var sum = 10;
    function sum(){
        console.log("fd");
    }
    //sum(); //10  sum is not a function

函数内部在执行的时候也会先经过一个预解析

   function sum(a){//var a
        console.log(a);   //undefined
        var a = 10;
      }
      sum(10);

6、函数返回值

函数返回值:函数调用完以后得到结果

​ 所有的函数都有返回值,默认是undefined ,使用return返回指定的结果

​ 语法:return 要返回的结果

​ 注意:return 只能返回一个值,如果写多个,返回最后一个

​ 函数中只要遇到return,函数就结束

function sum(a,b){
          var s1 = a+b;
          var s2 = a*b;
          //将结果返回到函数外使用
          return s1,s2;
      }  

7、获取非元素样式

获取非行间样式

​ 标准浏览器:getComputedStyle(标签).属性名 ie6 7 8不兼容

​ ie:标签.currentStyle.属性名 标准浏览器不兼容

​ 兼容:两个方法的兼容,拿其中一个方法作为判断条件

if(oDiv.currentStyle){//ie
            var w = oDiv.currentStyle.width;
        }else{//标准
            var w = getComputedStyle(oDiv).width;
        }
        alert(w);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值