0
点赞
收藏
分享

微信扫一扫

js的执行过程

朱小落 2022-01-26 阅读 93

js的执行过程

解析语法

  • 若语法错误直接报错
// 此为语法错误 将不会打印 hello  
//  而是直接 打印 Uncaught SyntaxError: Unexpected identifier 
console.log('hello')

vac b;

js的预编译

生成 GO(Global Object)

  • 全局扫描将 var 和 function 放入GO中
    • var定义的变量先设置为undefined
    • 是function的则直接将function写入AO(这就是你即使function在最底部 而你调用在上面也是可以调用的)
//1. GO{
//   a:undefined,
 //  c :function c(){}
// }

var a=123;

function c(){

}
//2. GO{
//   a:123,
 //  c :function c(){}
// }
// 若 有变量和函数名字相同时
//1. GO{
//   a:function c(){},
// }

var a=123;
function a(){}

//2. GO{
//   a:123,
// }

// 调用function

a(); // hello

function a(){
    console.log('hello')
}
// 若使用 const定义的function则预编译不会放入AO中

a();  // Cannot access 'a' before initialization

const a=function (){
    console.log('hello');
}
// a(); // hello 若将上面的a()注释掉将下面的打开则可以正常使用打印 

js的执行


举报

相关推荐

0 条评论