今日总结190523

    xiaoxiao2022-07-14  164

    函数:使用关键字function定义的具有独立作用域,能被反复调用执行的代码块。

    函数的作业:能够被描述某种功能:实现某种功能。

    函数的声明方式:三种:

    1.利用关键字function声明:

    function fn(){}

    2.函数表达式:

    var fn = function(){}

    3.利用new 和Function关键字声明

    var fn = new Function('参数','函数体') var fn = new Function('a','b','return a + b') //后面必须的字符串的形式,函数体是放在最后面的

    重复声明,同一个名字的函数,后面的函数会覆盖前面的函数

    每个函数不管设没设置return , 函数体执行完了都会默认返回一个值

    没设就是undefined:设置了就返回设置的那个值;

    而且函数只能返回一个值;所以当我们想要返回多个值得时候;

    我们必须的把他变成数组或者对象或者字符串;

    而且函数体只要执行了return:函数体就会停止运行;也就是说如果

    后面还有代码块:也不会被执行。

    函数的参数:————形参————实参

    形参:函数声明时定义的参数;类似于变量是虚的

    实参:函数执行时传入的值:

    函数参数的传入方式:对位传参————对象传参

    1对位传参:就是传入的参数位置是相互对应的:

    2.对象传参:当我们传入的参数量过大时,不好区别他们的位置对应,

    所以我们使用对象传参解决这一问题

    function fn(obj){ console.log(obj.name+obj.age+obj.height) } var obj ={ name:'zhangs', age:18, height:180 }

    为了避免我们在没有传参的时候就调用执行了函数——让其返回了undefined;

    我们就会在函数声明的时候为他们添加默认值:3 中方式:

    1,es5的方法:三目运算

    function fn(a){ a= a==undefined ? 5 : a; //5 是我们设置的默认参数 console.log(a) }

    2.es5的方法:逻辑或

    function fn(a){ a= undefined || 5 //5是我们设置的默认值 console.log(a) }

    3、es6的直接赋值发:

    function fn(a=5){ //5 是我们设置的默认值 console.log(a)}

    arguments————实参列表,是一个类数组;有length属性:

    把类数组转换成数组的2种方法:

    //1 var arr = Array.prototype.slice.call(arguments) //相当于利用call改变数组的this的指向 利用数组的slice属性剪切返回出新的数组再赋值: //2 var arr = Array.from(arguments) //这个方法以后是常用的 //DOM中获取的集合也是类数组,也会用到这个方法

    作用域分为三块:

    块级作用域只在if判断、for循环等语句里面有效,需要使用let关键字声明  {}  内的东西:

    函数作用域:函数体里面用var 或者 let 声明 的变量。只能在函数体里面使用:

    全局作用域:在全局用都有效,不管是let 还是var :

    let 和 var 的区别:

    var 可以重复对一个变量声明,let 不可以:

    var 声明的变量 函数执行的前发生预编译会提升,let 声明的变量不会提升:

    let 声明的变量只会在{ } 里面有效,var 不一定:比如在if或者for里面的时候:

    函数的作用域AO——只能里面的可以访问外面的,不能反着来

    全局的作用域GO 。。  GO===window

     

    最新回复(0)