js的执行机制
遇到一个问题,因为自己本身就是菜鸟的原因,弄懂了还是很高兴的。
console.log(a)
function a() {
return "this is function"
}
var a = function() {
return "this is not function"
}
var a = "test"
// 这时候输出的是"this is function"
console.log(b)
var b = function() {
return "this is not function"
}
function b() {
return "this is function"
}
var b = "test1"
// 这时候输出的是"this is function"
(function(){
a = 5
console.log(window.a)
var a = 10
console.log(a)
})()
// 输出undefined
// 输出10
js的执行有预编译期和执行期,定义的函数会提升到全局环境,进行预编译,所以执行顺序在函数表达式之前,而变量在声明前调用是undefined,在自执行的函数内部相当于一个块级作用域,变量提升不会提升到全局环境
浙公网安备 33010602011771号