定义了一个变量,并将其初始化为一个函数,通过变量fn引用函数,另外,就像声明其他变量一样,使用函数表达式定义函数时,函数体外有分号。
var fn = function() { // 函数执行代码 };Function构造函数可以接收任意数量的参数,最后一个参数为函数体,其他则为新函数的参数
var 变量名 = new Function("参数1","参数2",...,"参数n","函数体");
没有函数名称的函数成为匿名函数,匿名函数不能单独存在
函数表达式的方式定义的函数就是匿名函数
var fn = function() { }tips:匿名函数只有在被调用时才能初始化,普通函数编译后函数声明和它的赋值都会被提前,所以普通函数的调用可以放在任意位置
需要调用者,在程序运行的时候,自己自动执行一次。并且只执行一次
//第一种写法 (function() { alert('我是自己自动执行的'); })(); // 第二种写法 (function() { alert('我还能这么做哦'); }());
在js的函数中,对于传入参数的不确定的时候,可以使用arguments来接收传入参数数据, arguments是函数自带的一个容器,
function fn() { // console.log(arguments); arguments 伪数组 具备数组的一些特点 for(var i=0;i<arguments.length;i++) { console.log(arguments[i]); } // console.log(arguments); } fn(10,20,30,4,5,6);如果定义的函数没有返回值,那么函数被调用时会返回它的默认返回值undefined
注意:函数内的形参本质也是局部变量,函数形参只能在函数内访问,函数外部无法访问
在javascript代码运行前,优先进行代码的预解析,预解析完成后,代码再从上往下执行
var变量声明,创建变量的过程提升到作用域的最前面(只提升创建变量的过程,赋值的过程还在原位置)function函数声明,创建函数的过程中提升到作用域的最前面 var的提升级别会比function高例如,var num=8,js预解析为两部分:
// 声明变量,并提升到作用域的最前面。 var num; // 在原位进行赋值 num = 18;