JavaScript基础-函数
一、函数的创建
- 使用函数声明形式创建的函数 function 函数(){},会在代码执行前被创建。
<script>
fun();
function fun() {
console.log("我可以提前执行");
}
</script>
- 使用函数表达式创建的函数,不会声明提前,不能在声明前调用
<script>
var fun = function(){
console.log("我不可以提前执行");
}
fun();
</script>og(fun());//输出结果是5
二、匿名函数(立即执行函数)
1:无参匿名函数
(function () {
console.log("我是一个无参匿名函数");
})();
2: 含参匿名函数
<script>
(function (a , b) {
console.log(a + b);
})(2 , 3);
</script>
三、工厂方法创建对象(利用函数创建对象)
<script>
function creatPerson(name, age, gender) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.geder = gender;
obj.sayName = function () {
alert(name);
}
return obj;
}
var obj1 = creatPerson("孙悟空","28","男");
var obj2 = creatPerson("猪八戒","30","男");
obj2.sayName();
obj1.sayName();
</script>
四、函数的call()、apply()、bind()方法
- 用来重定义this 这个对象的!
<script>
function fun() {
alert("名字:" + this.name + "年龄:" + this.objAge );
}
var obj = {
name: "zhang",
objAge: 18
}
fun.call(obj);//名字:zhang年龄:18
fun.apply(obj);//名字:zhang年龄:18
fun.bind(obj)();//名字:zhang年龄:18
</script>
以上出了 bind 方法后面多了个 () 外 ,结果返回都一致!
由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行。
- call 、bind 、 apply 传参情况下
<script>
function fun(place, hoby) {
console.log("名字:" + this.name + "年龄:" + this.objAge , "出生地:" + place + "爱好" + hoby );
}
var obj = {
name: "zhang",
objAge: 18
}
fun.call(obj, '中国', '篮球');
fun.apply(obj,['美国','乒乓球']);
fun.bind(obj,['美国','乒乓球'])();
</script>
apply 和 call 传参方式不同,call()是直接传入参数,apply、bind是用传入数组的方式传入,bind的返回值是函数,在fun()函数中,this变量和传入的实参用逗号分开
五、arguments()函数
- 是一个类数组对象,通过索引来操作数据,也可以获取长度
arguments[0] 表示第一个实参
arguments.length 表示实参的个数 - 属性 callee
这个属性对应一个函数对象,就是当前正在指向函数的对象
六、箭头函数
- 书写方式:其实就是在普通函数的基础上稍加修改得到的
如:
普通函数:
<script>
const doubleValue = function (value) {
return value * 2;
}
console.log(doubleValue(3));
</script>
箭头函数:
<script>
const doubleValue = (value) => {简单的很,去掉function 并在参数的后面加上个胖箭头 => 就搞定。想想看,箭头其实就是代表(返回)的意思
return value * 2;
}
console.log(doubleValue(3));
</script>
简化箭头函数:
- 可以把参数的括号去掉, 甚至可以把花括号和return也去掉 如:
<script>
const doubleValue = value => value * 2;
console.log(doubleValue(3));
</script>
输出的结果均是: 6
注意:this
- 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。