webveuje/zuoye/js/预编译作用域.md
2021-06-03 10:52:41 +08:00

215 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 预编译作用域练习
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
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
```