学习时间 | 完成时间 ✅ | 重难点 | 疑问/遗漏 |
---|---|---|---|
复习时间 | |||
立即执行函数
自动执行,执行完成以后立即释放 IIFE immdiately-invoked function
(function(){
})();
(function(){
}())
一定是表达式才能被执行符号执行
函数声明变成表达式的方法
函数声明之前加 + - ! 或者加个1&&运算 ||
+function test() {
}();
此时test也会立即执行
function test() {
var arr=[];
var i=0;
for(;i<10;) {
arr[i]=function() {
document.write(i+' ')
}
i++;
}
return arr;
}
var myArr=test();
for(var j=0;j<10;j++){
myArr[j](); //打印 十个10,形成闭包
}
改造
function test() {
var arr=[];
for(var i=0;i<10;i++){
(function(j){
arr[j]=function(){
document.write(j)
}
})(i)
}
return arr;
}
var myArr=test();
for(var j=0;j<10;j++){
myArr[j](); //打印 0 1 2 3 4 5 6 7 8 9
}
var num=(1,2)
console.log(num) 2 //逗号运算符,返回的永远是最后一个
var fn=(
function test1() {return 1},
function test2() {return 2}
)()
console.log(typeof(fn)) 'number'
----------------
var a=10
if(function b(){}){ //(function b(){}) 这个是个表达式,表达式b就被忽略了
a+=typeof(b) a=a+'undefined'
}
console.log(a) //10undefined