1. 立即执行函数
- 定义在全局的函数只有关闭浏览器或者退出程序才会释放
- IIFE: Immediately-Invoked Function Expression
- 解决页面加载自动执行,执行完成后立即释放(避免了只会执行一次的内容一直存在于全局)
- IIFE用匿名函数或者函数声明(会忽略函数名)都是一样的效果,执行完成后立即释放
- 一定是表达式才能被执行符号执行
- 表达式会忽略函数名 → 函数表达式如果命名了a,不会被声明
- 连续写2个立即执行函数,要用分号间隔(习惯是在最前面加分号)
延伸:函数名
- 总结:找名字无限制,调用有限制
- 表达式后的函数若有名字a,调用.name打印出a(不管在函数内部还是外部,.name都能获得名字)
var test = function a() {
console.log(arguments.callee)
console.log(test.name) // a
a() // 只能在内部调用
}
test()
console.log(test.name) // a
console.log(a) // 报错
- 延伸 声明变量test若是匿名函数,调用.name打印出test
var test = function () {
console.log(test.name) // test
console.log(arguments.callee)
}
test()
console.log(test.name) // test
- 但直接打印a总是会报错,因为a没有被声明
var test = function a() {
console.log(arguments.callee)
}
test()
console.log(test.name)
console.log(a)
- 题目-这里可没有函数,无形参,这个题目考的是,表达式会忽略函数名
1h22min