导读
这两天的GitHub Trending repositories被一个名叫 javascript-questions的项目霸榜了,项目中记录了一些JavaScript题目。
我大概从头到尾看了一遍,都是一些基础的题目,我大概花了半个小时(有些题很简单,可以一扫而过)把这些题做完了,虽然题目很简单,但是每道题都对应一个知识点,如果这个知识点你没有接触过,那肯定会做错,如果你接触过这些知识点,那么这些题对你来说就很容易。
建议大家也花半个小时来做一做,以便查漏补缺。
为方便大家能够更快的做题,而不把时间浪费在翻译上,我又花了几个小时把它们翻译成了中文,当然已经获得了作者授权。
文中有些点作者解释的不太完整,为了更好的理解,我在文中添加了一些个人解释。
仓库地址:https://github.com/lydiahallie/javascript-questions
JavaScript 进阶问题列表
我在我的Instagram上发布了每日JavaScript选择题,我也会在这里发布!
从基础到高级:测试您对JavaScript的了解程度,刷新您的知识,或为您的编码面试做好准备!💪 🚀我每周用新问题更新这个项目。
答案位于问题下方的折叠部分,只需单击它们即可展开。 祝你好运❤️
1. 下面代码的输出是什么?
function sayHi() { console.log(name); console.log(age); var name = "Lydia"; let age = 21; } sayHi();
A: Lydia 和 undefined
B: Lydia 和 ReferenceError
C: ReferenceError 和 21
D: undefined 和 ReferenceError
答案: D
在函数中,我们首先使用var关键字声明了name变量。 这意味着变量在创建阶段会被提升(JavaScript会在创建变量创建阶段为其分配内存空间),默认值为undefined,直到我们实际执行到使用该变量的行。 我们还没有为name变量赋值,所以它仍然保持undefined的值。
使用let关键字(和const)声明的变量也会存在变量提升,但与var不同,初始化没有被提升。 在我们声明(初始化)它们之前,它们是不可访问的。 这被称为“暂时死区”。 当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。
译者注: