(function(){ (function(){
var a=b=3 =====> b = 3; var a =b
})() })()
console.log(a);
console.log(b); // 报错 a is not defined 先打印b的话 b=3
// a在函数作用域中 外面打印会报错,b直接赋值 属于全局
for (var i = 1; i <=3 ;i++) {
setTimeout(function(){
console.log(i);
},0)
}
// 先执行主线程for--在将settimeout放入异步队列中等待--继续执行下一个for--for执行完毕 i=4
// for执行完毕i=4再执行异步(循环三次有三个定时器) 输出结果为 4,4,4
for (let i = 1; i <=3 ;i++) {
setTimeout(function(){
console.log(i);
},0)
}
// 1,2,3 let形成块级作用域
function fun(n){ var n
console.log(n); function fun(n){
var n =456 var n
console.log(n); =====> console.log(n);
} n =456
var n = 123 console.log(n);
fun(n) }
n = 123
fun(n)
// 123,456
function fun(){ var n
console.log(n); function fun(){
var n =456 var n
console.log(n); =====> console.log(n);
} n =456
var n = 123 console.log(n);
fun(n) }
n = 123
fun(n)
// undefined,456
function fun(){
console.log(fun);
var fun =456
console.log(fun);
}
fun()
var fun = 123
函数提升的优先级高于变量提升的优先级