一、JS声明函数的三种方式:
1、// 函数声明(function declaration) 赋值发生在代码解析阶段
function h() {
// h
}
2、// 函数表达式(function expression) 赋值发生在代码运行阶段, :函数表达式需要在语句的结尾加上分号,表示语句结束。而声明式定义函数在结尾的大括号后面不用加分号:
var h = function() {
// h
}
3、使用Function构造函数 ,不建议这种方式
var add2=new Function();调用 :add2()
二、函数特点
1、函数提升优先级比变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖。
2、在函数中,参数是局部变量
3、在函数中 return 语句可以让函数提前返回。return 被执行时,函数会立即返回。
一个函数总会返回一个值,如果没有指定这个值,它就会返回 undefined。
三、立即执行的函数的几种写法
1、
(function () {
alert(1);
})();
2、
(function () {
alert(2);
}());
3、
! function () {
alert(3);
}();
四、函数中this的指向
var aa = {
name:"xz",
age:20,
run:function(){
console.log(this);
}
}
aa.run(); //this指向aa对象
注释:当一个函数被保存为对象的一个属性时,就称它为方法。当方法被调用时,this 被绑定到这个对象。
function bb(){
console.log(this);
}
bb(); //this指向window对象
构造函数调用模式 :new 函数名();
this:指向new出来的对象
五、函数参数 arguments
当函数被调用时,会有一个 arguments 数组。arguments 不是一个真正的数组,它只是一个类数组的对象,它拥有 length 属性,但没有数组的相关方法。