1.变量提升: //浏览器解析 fn() //解析时不需要提升 function fn(){ //解析时需要提升 console.log(1); } fn() //解析时不要提升 //变量提升后 function fn(){ //提升后不但声明会提升,值也会提升 console.log(1); } fn()//打印 fn()//打印
2.函数: 什么是函数: 前端的函数与数学函数概念是完全不同的 可以理解为一个盒子 当一段需要多次使用的复杂代码段,我们可以把它放在(抽离) 一个盒子中(就是函数) 在需要使用的地方去调用即可 如何使用函数: 函数分为定义(创建)和调用 定义(创建):必须要有,没有就无法调用 调用:也必须要有
3.函数参数: // 如果没有参数,那么函数的功能相对单一,不够灵活 // 函数参数的作用,让函数参数更灵活,更方便在多个地方使用 // 参数也能使我们的函数更具有差异性 // 参数语法: // 形参:------->function或者函数名后的小括号 // //实参:------->函数调用时的小括号 // 参数作用: // 1.形参:每书写一个形参,就相当于在函数内部创建一个变量,形参的值是由实参传递进来的 // 2.实参:按照书写顺序一一对应,传递给形参
4.函数参数的数量: 参数的数量: 参数数量不一致 1.形参多,实参少 2.实参少,形参多 --> //1.形参多,实参少 /** * 我们当前案列,传递1个形参,3个实参 * 第一个实参,传递给对应的形参 * 后续的所有参数,都不能通过形参获取 * */ // function fn(a){ // console.log(a); // } // fn(1,2,3) //2.实参少,形参多 //我们当前案列,传递3个形参,1个实参 // 第一个实参,传递给对应的形参 //后续没有实参 //所以,后续的形参相当于之声明不赋值------>undefined // function fn(a,b,C){ // console.log(a);//1 undefined undefined // } // fn(1) 5.函数参数的默认值: * 创建形参的时候,直接赋值. * 如果传递有对应的实参,按照实参的值 * 如果没有传递对应的实参,按照默认值.
6.函数的定义与调用 1.定义: 语法:function(){} 1.1赋值式定义:var fn = function(){} 1.2声明式定义:function 函数名(){} 具体含义: function ------>关键字 函数名(可以不写)------>不写函数,我们称为匿名函数,如果有叫具名函数 ()------>书写参数的位置 {}------>代码,函数调用执行的代码 2.调用: 函数的定义分两种方式,调用只有一种 语法:函数名()
-
-
函数的返回值
-
每个函数都有一个返回值,不管是否写了返回值
-
每个函数默认都有返回值----->默认返回undefined
-
如果我们自己写了返回值,就不会返回默认值了,返回的是我们书写的 return要返回的内容 注意点:函数的返回值具有中断函数的功能,所以我们书写返回值时需要放在最后. 列: function fn(){
} var myFn = fn() console.log(myFn);
function fn1(){ return '我是fn1返回值' } var myFn = fn() console.log(myFn);
-
8.声明式与赋值式的区别: 自己写的代码 // fn() // var fn = function(){ // console.log(1); // } // fn() // //浏览器解析 // fn()//---->不需要变量提升 // var fn = function(){//----->需要变量提升 // console.log(1); // } // fn() //------>不需要变量提升
//改变变量提升以后(只能提升定义,不会提升值)
var fn; //---->浏览器解析fn为 undefined
fn() //------>此时fn也为undefined()
var fn = function(){//----->因为undefined没有小括号,此时fn变为undefined()变为一个函数
console.log(1);
}
fn() //------此时打印