今日励志语:看自己的工作那些环节还未做到100%,发现及时弥补
今日知识点:函数
匿名函数与自执行函数
匿名函数
匿名函数:没有名字的函数
匿名函数如何使用:
- 将匿名函数赋值给一个变量,这样就可以通过变量进行调用 我们将这个称之为函数表达式 函数表达式值会预解析前面的var 后面的值不会被解析
- 自执行(匿名函数自执行)
匿名函数可以避免全局变量的污染
自执行函数
函数可以自执行
(function fn(){
console.log(“我可以自己执行哦”);
})();
函数也是一种类型
声明函数的两种方式
函数声明:
function 函数名(){
//函数体
}
函数表达式(匿名函数):
var 函数名 = function(){
//函数体
}
函数可以作为参数
通常,我们把作为参数传递的函数叫做回调函数
function fn1(fn) {
fn();
}
fn1(function(){
console.log(“哈哈”);
});
函数可以作为返回值
在js高级中,闭包会使用到。
function fn1() {
return function(){
console.log(“呵呵”);
}
}
fn1()();//调用
今日面试题:call 和 apply 的区别
答、
它们的共同之处:都“可以用来代替另一个对象调用一个方法,将一个函数的对象上
下文从初始的上下文改变为由 thisObj 指定的新对象。”
它们的不同之处:
Apply:最多只能有两个参数——新 this 对象和一个数组 argArray。如果给该方法传递
多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里
面。如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个
TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被
用作 thisObj, 并且无法被传递任何参数。
Call:则是直接的参数列表,主要用在 js 对象各方法互相调用的时候,使当前 this 实例指
针保持一致,或在特殊情况下需要改变 this 指针。如果没有提供 thisObj 参数,那么
Global 对象被用作 thisObj。
更简单地说,apply 和 call 功能一样,只是传入的参数列表形式不同如:
func.call(func1,var1,var2,var3)对应的 apply 写法为:func.apply(func1,[var1,
var2,var3])。