基础运算Basics

变量Variables

简答题

执行下面的代码时,程序会崩溃么?

1 2
console.log(a)var a = 1;
A

B

不会

解释

你会看到 undefined,详情参见 变量吊起 hoisting

逻辑运算Logics

简单题

执行下面的代码,你会看到什么

1
console.log(1 === 1.0);
答案
true

js 中 整数和小数 都是 number 类型

分析题

下面的代码的 第 2 行 试图在使用 || 运算规则,达到默认值的效果

1 2 3 4 5 6
function increase(value, delta) { delta = delta || 1; return value + delta;}console.log(increase(3, 2));console.log(increase(3, null));

请分析

1.

程序执行后,你会看到什么

2.

这种设计有一个设计缺陷,请你找出来

答案
1.

会看到

5
4
2.

如果调用方就想 increase by 0

当前的代码,会让 delta 的 0 变为 1

从而得到不想要的结果

1 <
console.log(increase(3, 0));4

条件 与 循环 语句

分析题

1 2 3 4
do { let value = Math.random();} while (value < 0.5);console.log(value);
1.

当前代码,运行时 会报错,为什么

2.

如何改进

答案
1.

因为 let 限制了 value 的作用域

2.

将 let 改为 var,或者 将 let 声明提前到 do 前面

数组Array

内存分析题

运行下面的代码,你会看到什么

1.
1 2 3 4 5
const a1 = [];const a2 = a1;a2.push(1);console.log(a1);console.log(a2);
[ 1 ]
[ 1 ]
2.
1 2 3 4 5
const a1 = [6, 7, 3, 8, 4];const a2 = [0, ...a1];a2.push(0);console.log(a1);console.log(a2);
[ 6, 7, 3, 8, 4 ]
[ 0, 6, 7, 3, 8, 4, 0 ]
3.
1 2 3 4 5
const a1 = [[6, 7, 3], 8, 4];const a2 = [0, ...a1];a2[1][0] = 2;console.log(a1);console.log(a2);
[ [ 2, 7, 3 ], 8, 4 ]
[ 0, [ 2, 7, 3 ], 8, 4 ]

对象Object

内存分析题

运行下面的代码,你会看到什么

1.
1 2 3 4 5
const obj1 = {};const obj2 = obj1;obj2.x = 1;console.log(obj1);console.log(obj2);
{ x: 1 }
{ x: 1 }
2.
1 2 3 4 5
const obj1 = { x: 1, y: 2 };const obj2 = { z: 3, ...obj1 };obj2.x = 7;console.log(obj1);console.log(obj2);
{ x: 1, y: 2 }
{ x: 7, y: 2, z: 3 }
3.
1 2 3 4 5 6 7 8 9 10 11
const obj1 = { center: { x: 1, y: 2 }, radius: 3};const obj2 = { color: 'red', ...obj1 };obj2.center.x = 7;console.log(obj1);console.log(obj2);
{ center: { x: 7, y: 2 }, radius: 3 }
{ color: 'red', center: { x: 7, y: 2 }, radius: 3 }

函数Functions

分析题

下面代码运行的结果是什么

1 2 3 4 5 6 7 8 9
call();function call() { console.log('call 1');}call();function call() { console.log('call 2');}call();
答案
call 2
call 2
call 2

分析题

下面代码在预扫描过后,会在执行前给哪些变量开数据格

1 2 3 4
v1 = 1;var v2 = 2;let v3 = 3;const v4 = 4;
答案
v2 = undefined

阅读题

阅读下面的函数,你觉得你可以怎么调这个函数

1 2 3 4 5 6 7 8 9
function incr(value, delta) { if (value === undefined) { return; } if (delta === undefined) { delta = 1; } return value + delta;}
答案
1 2 =3 4 5 =
// 传 2 个参数 可以指明更改量incr(10, 2)2 // 传 1 个参数 相当于是默认 + 1incr(10)1

综合练习

使用 js 完成下面的程序中的 1 - 2 个

目前,你应该只能在一个文件中完成所有的功能,还不能拆分多个文件

需要使用类设计时,暂时先用 object 语法将就

暂时先按 面向过程的思维写

猜数字

Q10

五子棋

Q56

1024

Q57

黑白棋

Q58

ZZAX 微信公众

文档一更新,立刻告诉你