最后
全网独播-价值千万金融项目前端架构实战
从两道网易面试题-分析JavaScript底层机制
RESTful架构在Nodejs下的最佳实践
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
一线互联网企业如何初始化项目-做一个自己的vue-cli
思维无价,看我用Nodejs实现MVC
代码优雅的秘诀-用观察者模式深度解耦模块
前端高级实战,如何封装属于自己的JS库
VUE组件库级组件封装-高复用弹窗组件
函数 f2
执行后为什么返回了 undefined
?
let f1 = () => '前端自习课';
f1(); // -> '前端自习课'
let f2 = () => {};
f2(); // -> undefined
💡解答
我们第一眼感觉应该是返回 {}
,可是却返回了 undefined
,这本质原因是因为箭头函数返回的 {}
是箭头函数语法的一部分,我们写一个测试用例就能看出来:
let f2 = () => {
return '前端自习课'
};
f2(); // -> '前端自习课'
因此上面 f2
函数返回的是 undefined
,当然,如果需要返回一个 {}
对象也是可以的,只需要使用括号将返回值包裹起来:
let f2 = () => ({});
f2(); // -> {}
4. 还能使用反引号执行函数?
❓问题
调用函数除了下面的方式,还有其他方式吗?
function f(...args) {
return args;
}
f(1, 2, 3); // -> [ 1, 2, 3 ]
当然还有啦,我们可以使用反引号调用:
f`Hello string ${'前端自习课'}, Hello boolean ${false}, Hello array ${[1, 2, 3]}`;
/*
[
["Hello string ", ", Hello boolean ", ", Hello array ", ""],
"前端自习课",
false,
[1, 2, 3]
]
*/
💡解答
这个看着很神奇的样子,但是实际上用的是模版字符串。这是一种高级形式的模版字符串,是带标签的模版字符串。
上面示例代码中:f
函数是模版字面量的标签,标签可以用函数解析模板字符串。标签函数的第一个参数包含一个字符串值的数组。其余的参数与表达式相关。
📚参考
5. JavaScript 中也有标签?
❓问题
下面这种写法会有问题吗?
foo: {
console.log("Hello");
break foo;
console.log("前端自习课");
}
💡解答
答案是没问题,会返回 Hello
的字符串。因为 foo
被识别为一个标签,然后执行后面 console.log("Hello")
,然后执行 break foo
中断执行。
我们经常会使用带标签的语句和 break
/continue
语句一起使用,从而实现结束或继续循环:
let str = '';
loop1:
for (let i = 0; i < 5; i++) {
if (i === 1) {
continue loop1;
}
str = str + i;
}
console.log(str);
// expected output: "0234"
📚参考
6. {}{}
是 undefined
❓问题
我们可以在控制台测试下面代码。类似这样的结构会返回最后定义的对象中的值。
{}{}; // -> undefined
{}{}{}; // -> undefined
{}{}{}{}; // -> undefined
{foo: 'bar'}{}; // -> 'bar'
{}{foo: 'bar'}; // -> 'bar'
{}{foo: 'bar'}{}; // -> 'bar'
{a: 'b'}{c:' d'}{}; // -> 'd'
{a: 'b', c: 'd'}{}; // > SyntaxError: Unexpected token ':'
({}{}); // > SyntaxError: Unexpected token '{'
💡解答
当解析到 {}
会返回 undefined
,而解析 {foo: 'bar'}{}
时,表达式 {foo: 'bar'}
返回 'bar'
。
这里的 {}
有两重含义:表示对象,或表示代码块。
例如,在 () => {}
中的 {}
表示代码块。所以我们必须加上括号:() => ({})
才能让它正确地返回一个对象。
因此,我们现在将 {foo: 'bar'}
当作代码块使用,则可以在终端中这样写:
if (true) {
foo: "bar";
} // -> 'bar'
给大家推荐一个实用面试题库
**1、前端面试题库 (**面试必备) 推荐:★★★★★
地址:前端面试题库
文末
js前端的重头戏,值得花大部分时间学习。
推荐通过书籍学习,《 JavaScript 高级程序设计(第 4 版)》你值得拥有。整本书内容质量都很高,尤其是前十章语言基础部分,建议多读几遍。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
另外,大推一个网上教程 现代 JavaScript 教程 ,文章深入浅出,很容易理解,上面的内容几乎都是重点,而且充分发挥了网上教程的时效性和资料链接。
学习资料在精不在多,二者结合,定能构建你的 JavaScript 知识体系。
面试本质也是考试,面试题就起到很好的考纲作用。想要取得优秀的面试成绩,刷面试题是必须的,除非你样样精通。
这是288页的前端面试题