流浪人

导航

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,在自执行的函数内部相当于一个块级作用域,变量提升不会提升到全局环境

posted on 2016-08-24 10:49  李毅鹏  阅读(120)  评论(0编辑  收藏  举报