# 预编译作用域练习 1. 下面代码的执行结果是什么为什么 ``` console.log(x) x=5 ``` 2. 下面代码的执行结果是什么为什么 ``` console.log(x) var x=5 ``` 3. 下面代码的执行结果是什么 为什么 ``` var x = 5; console.log(x+""+y) var y=5 ``` 4. 下面代码的执行结果是什么 为什么 ``` "use strict"; x = 3.14; ``` 5. 下面代码的执行结果是什么 为什么 ``` "use strict"; myFunction(); function myFunction() { y = 3.14; // 报错 (y 未定义) } ``` 6. 为什么要使用严格模式 7. 总结严格模式的限制 8. 下面代码的执行结果是什么 为什么 ``` var x = 0.1; var y = 0.2; var z = x + y console.log(z==0.3) ``` 9. js有几种类型的作用域 分别是啥 10. 下面代码的执行结果是什么 为什么 ``` function myFunction() { var carName = "porsche"; console.log(carName) } ``` 11. 下面代码的执行结果是什么 为什么 ``` function myFunction() { var carName = "porsche"; } console.log(carName) ``` 12. js运行三部曲是 13. 任何变量如果未经声明就赋值 此变量是 14. 一切声明的全局变量 全是 的属性 15. 分析下面代码 的预编译执行过程 ``` var x = 1, y = z = 0; function add (n) { return n = n + 1; } y = add(x); function add (n) { return n = n + 3; } z = add(x) ``` 16. 函数预编译的步骤 17. 全局预编译的步骤 18. 分析下面代码的预编译执行过程 ``` function fn(a){ console.log(a); var a = 123; console.log(a); function a(){}; console.log(a); var b = function(){}; console.log(b); function d(){}; } //调用函数 fn(1); ``` 18. 分析下面代码的预编译执行过程 ``` var a = 1; console.log(a); function test(a) { console.log(a); var a = 123; console.log(a); function a() {} console.log(a); var b = function() {} console.log(b); function d() {} } var c = function (){ console.log("I at C function"); } console.log(c); test(2); ``` 19. 为什么会发生变量提升 20. 下面代码的执行结果是什么 为什么 ``` fun(); console.log(b); var b = function fun(){ var a = 456; console.log(a); } ``` 21. 下面代码的执行结果是什么 为什么 ``` console.log(b); var b = function fun(){ var a = 456; console.log(a); } fun(); ``` 22. 什么是执行期上下文 23. js中有哪几种执行期上下文 分别介绍 24. 分析下面代码的预编译执行过程 ``` global = 100; function fn() { console.log(global); global = 200; console.log(global); var global = 300; } fn(); var global; ``` 25. 分析下面代码 预编译执行过程 ``` function test() { console.log(b); if (a) { var b = 100; } c = 234; console.log(c); } var a; test(); a = 10; console.log(c); 作者:前端布吉岛 链接:https://juejin.cn/post/6933756598678454280 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ```