▲ 点击下方“前端开发博客”关注公众号
回复“面试”获取面试精选文章
忙碌的一周过去了,一起来汇总一下前端开发博客最近一周有哪些值得阅读的东西吧。
文章排行
最新试题
上周试题
18. 输出是什么?
function checkAge(data) {
if (data === { age: 18 }) {
console.log('You are an adult!')
} else if (data == { age: 18 }) {
console.log('You are still an adult.')
} else {
console.log(`Hmm.. You don't have an age I guess`)
}
}
checkAge({ age: 18 })
A:
You are an adult!
B:
You are still an adult.
C:
Hmm.. You don't have an age I guess
答案: C
在测试相等性时,基本类型通过它们的值(value)进行比较,而对象通过它们的引用(reference)进行比较。JavaScript 检查对象是否具有对内存中相同位置的引用。
题目中我们正在比较的两个对象不是同一个引用:作为参数传递的对象引用的内存位置,与用于判断相等的对象所引用的内存位置并不同。
这也是 { age: 18 } === { age: 18 }
和 { age: 18 } == { age: 18 }
都返回 false
的原因。
19. 输出是什么?
function getAge(...args) {
console.log(typeof args)
}
getAge(21)
A:
"number"
B:
"array"
C:
"object"
D:
"NaN"
答案: C
扩展运算符(...args
)会返回实参组成的数组。而数组是对象,因此 typeof args
返回 "object"
。
20. 输出是什么?
function getAge() {
'use strict'
age = 21
console.log(age)
}
getAge()
A:
21
B:
undefined
C:
ReferenceError
D:
TypeError
答案: C
使用 "use strict"
,你可以确保不会意外地声明全局变量。我们从来没有声明变量 age
,因为我们使用 "use strict"
,它将抛出一个引用错误。如果我们不使用 "use strict"
,它就会工作,因为属性 age
会被添加到全局对象中了。
21. 输出是什么?
const sum = eval('10*10+5')
A:
105
B:
"105"
C:
TypeError
D:
"10*10+5"
答案: A
代码以字符串形式传递进来,eval
对其求值。如果它是一个表达式,就像本例中那样,它对表达式求值。表达式是 10 * 10 + 5
。这将返回数字 105
。
22. cool_secret 可访问多长时间?
sessionStorage.setItem('cool_secret', 123)
A: 永远,数据不会丢失。
B: 当用户关掉标签页时。
C: 当用户关掉整个浏览器,而不只是关掉标签页。
D: 当用户关闭电脑时。
答案: B
关闭 tab 标签页 后,sessionStorage
存储的数据才会删除。
如果使用 localStorage
,那么数据将永远在那里,除非调用了 localStorage.clear()
。
23. 输出是什么?
var num = 8
var num = 10
console.log(num)
A:
8
B:
10
C:
SyntaxError
D:
ReferenceError
答案: B
使用 var
关键字,你可以用相同的名称声明多个变量。然后变量将保存最新的值。
你不能使用 let
或 const
来实现这一点,因为它们是块作用域的。
24. 输出是什么?
const obj = { 1: 'a', 2: 'b', 3: 'c' }
const set = new Set([1, 2, 3, 4, 5])
obj.hasOwnProperty('1')
obj.hasOwnProperty(1)
set.has('1')
set.has(1)
A:
false
true
false
true
B:
false
true
true
true
C:
true
true
false
true
D:
true
true
true
true
答案: C
所有对象的键(不包括 Symbol)在底层都是字符串,即使你自己没有将其作为字符串输入。这就是为什么 obj.hasOwnProperty('1')
也返回 true
。
对于集合,它不是这样工作的。在我们的集合中没有 '1'
:set.has('1')
返回 false
。它有数字类型为 1
,set.has(1)
返回 true
。
好了,以上就是本周的汇总,以后我们每周会汇总一次,相信你会从中找到你喜欢的内容,最后,记得点个在看,转发文章,关注一下我哦。
整理不易,点个“在看”,支持我们↓↓↓