Javascript 进阶 3-12 10题测验问题

Q1

我们都知道 Javascript 是一个动态型别的语言,必须在执行之后才知道型别

请问以下 a、b、c、d、e 的型别是?

var a = true;var b = 'undefined';var c = 1;var d = null;var e = NaN;console.log(typeof(a));console.log(typeof(b));console.log(typeof(c));console.log(typeof(d));console.log(typeof(e));

A: boolean / string / number / null / number
B: boolean / undefined / number / object / NaN
C: boolean / string / number / object / number
D: boolean / undefined / boolean / object / number

答案: C

补充: NaN 虽然在 JavaScript 代表无效的数字,但是还是归类于数字唷~另外 null 在课程上有讲述到,这是很长久的 bug,所以才会显示 object。

Q2

请问当使用了 new Number() 建立资料后后,此时使用 typeof() 会出现什么型别?

A: array
B: object
C: number
D: string

答案: B

补充: 凡是使用 new 所建构的型别,在 typeof 都会是 object 唷~

Q3

请问下方程式码分别为 true 还是 false?

var a = '10';console.log(10 == this.a);console.log(10 === this.a);

A: true, false
B: false, true
C: true, true
D: false, false

答案: A

补充: 一般来讲,实际开发最好还是使用严格模式来做比较(三个等于)否则很容易出现一些奇怪的 bug

Q4

请问以下答案是什么?

var a = new Object();var b = a;console.log(a === b);

A: true
B: false
C: undefined
D: 以上都不是

答案: A

补充: 这边的观念主要是物件会参考同一个记忆体,所以答案是 true,后面章节会有更详细的介绍。

Q5

请问以下答案是什么?

var a = new Object('1234');var b = BigInt(1234);console.log(a == b);

A: true
B: false
C: NaN
D: undefined

答案: A

补充: 在做宽鬆比较的时候,a 是一个物件格式,但是会被转换成与 BigInt 相同格式

Q6

请问以下程式码会跑哪一个 console.log()?

var a = new Object();if (a) {    console.log('程式执行');} else {    console.log('程式跑 else');}

A: 程式执行
B: 程式跑 else
C: 都不是

答案: A

补充: 就算透过建构式来建立的物件,一样是会被判定 true,因为物件的记忆体已经存在了。

Q7

请问以下答案是什么?

console.log(10 + 10 - 10 * 2);

A: 0
B: 20
C: 10
D: NaN

答案: A

补充: 依照运算子的 优先度 及 相依性 计算就可以得到计算结果为0。

Q8

请问以下 console.log() 会出现什么答案?

var a = 10;console.log(++a * a);a = 10;console.log(--a * a);

A: 121, 81
B: 110, 90
C: 120, 80
D: 144, 64

答案: A

补充: 因为 ++a 的时候,a + 1 变成 11 所以就是 11 * 11,--a 同理。

Q9

前面章节我们了解 JavaScript 有所谓的 ASI 机制,那么底下程式码是否会出现错误呢?

var a = 10(a + 10).toString();

A: 出现错误
B: 不会出现错误

答案: A

补充: 实际执行得状况会变成 var a = 10(a + 10).toString();

Q10

ASI 的机制各有好坏,其中常见的经典例子就是 return,那么底下程式码是否为正确呢?

var a = 1(function() {    console.log(a);}())

A: 出现错误
B: 不会出现错误

答案: A

补充: 这题与上一题类似,之前的文章 也有讲到类似的题型,实际运作时程式码会变成这样var a = 1(function() { console.log(a); })()

以上就是练习的十题,大家可以顺便检视一下自己的学习成果喔!汪汪~


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章