天天推送各种框架和库的,看起来也挺累的。。。今天放松一下,做几道 JavaScript 基础题找找自信吧!
function Animal(){
this.type = "animal"
}
function Dog(){
this.name = "dog"
}
Dog.prototype = new Animal()
var PavlovPet = new Dog();
console.log(PavlovPet.__proto__ === Dog.prototype)
console.log(Dog.prototype.__proto__ === Animal.prototype)
console.log 打印出的值是?
var arr = [5, 22, 14, 9];
console.log(arr.sort());
console.log 打印出的值是?
for (let i = 0; i < 3; i++) {
const log = () => {
console.log(i)
}
setTimeout(log, 100)
}
console.log 打印出的值是?
const length = 4
const numbers = []
for (var i = 0; i < length; i++);{
numbers.push(i + 1)
}
console.log(numbers)
console.log 打印出的值是?
const clothes = ['shirt', 'socks', 'jacket', 'pants', 'hat']
clothes.length = 0
console.log(clothes[3])
console.log 打印出的值是?
var a = 1
function output () {
console.log(a)
var a = 2
console.log(a)
}
console.log(a)
output()
console.log(a)
console.log 打印出的值是?
function foo() {
let a = b = 0
a++
return a
}
foo()
console.log(typeof a)
console.log(typeof b)
console.log 打印出的值是?
console.log(+true)
console.log(!"ConardLi")
console.log 打印出的值是?
// module.js
export default () => "Hello world"
export const name = "c"
// index.js
import * as data from "./module"
console.log(data)
console.log 打印出的值是?
const a = {};
const b = { key: "b" };
const c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]);
console.log 打印出的值是?
把原型的基础知识记清楚这道题就错不了:
所有的对象都有 [[prototype]] 属性(通过 _proto_ 访问),该属性对应对象的原型;所有的函数对象都有 prototype 属性,该属性的值会被赋值给该函数创建的对象的 _proto_ 属性。
答案是:
true
true
抱歉,答案不是 [5, 9, 14, 22] 。如果不传入排序函数,sort 函数会将每个元素转换成字符串,然后根据它们的 UTF-16 值排序。
答案是:
[14, 22, 5, 9]
这题我会,因为:
定时器是异步执行,浏览器会优先执行同步任务,在遇到定时器时会先把它们暂存在一个宏任务队列中,待当前宏任务队列的所有任务执行完毕后才会去执行队列中的任务,此时循环已执行完毕,i 已经是 3。
所以答案是:
哎不对?答案为啥不是 3、3、3 ?
因为循环里的 i 是用 let 声明的,而不是用 var 声明的!
let 声明的变量拥有块级作用域。即在 for 循环或 if 中用 let 定义变量,在外面是访问不到的。
形如 for (let i...) 的循环在每次迭代时都为 i 创建一个新变量,并以之前迭代中同名变量的值将其初始化,所以上面的代码实际上相当于:
for (let i = 0) {
const log = () => {
console.log(i)
}
setTimeout(log, 100)
}
for (let i = 1) {
const log = () => {
console.log(i)
}
setTimeout(log, 100)
}
for (let i = 2) {
const log = () => {
console.log(i)
}
setTimeout(log, 100)
}
要看仔细啊,看到小括号和大括号之间有个;吗?
答案是:
[5]
将数组的长度赋值为 0 就相当于从数组中删除所有元素。
答案是:
undefined
答案是:
1
undefined
2
1
let a 是一个局部变量。typeof a 检查的是未声明的变量。
b 是个全局变量,它在 foo 函数中被赋值。
答案是:
undefined
number
+ 运算符首先会尝试将 boolean 类型转换为数字类型,true 被转换为 1,false 被转换为 0。
字符串 'ConardLi' 是一个真值,所以 !'ConardLi' 为 false。
答案是:
1
false
考察下你对 ES Module 的认识。
答案是:
{ default: function default(), name: "c" }
对象能做对象的 key 吗?当然不能,两次赋值实际上是:
a["Object object"] = 123;
a["Object object"] = 456;
答案是:456
怎么样,找到自信了吗?
来源: code秘密花园
很多童鞋可能年后有自己的一些计划,比如换份工作环境,比如对职业目标有了新的打算。当然面试这一关不得不过,大概又不可能系统性的复习,这里罗列一些 重点 面试的知识点和文章,
什么是webpack和grunt和gulp有什么不同?什么是bundle,什么是chunk,什么是module?什么是Loader?什么是Plugin?如何可以自动生成webpack配置?webpack-dev-server和http服务器如nginx有什么区别?
多问问应聘者高层次的知识点,如果能讲清楚这些概念,就说明即使应聘者没怎么接触过 JavaScript,也能够在短短几个星期之内就把语言细节和语法之类的东西弄清楚。
面试比棘手的技术问题要多,这篇文章整理了37个JavaScript基本面试问题和解答,这些仅仅是作为指导。希望对前端开发的你有所帮助!
React常见面试题:React中调用setState之后发生了什么事情?React中Element与Component的区别?优先选择使用ClassComponent而不是FunctionalComponent?React中的refs属性的作用是什么?React中keys的作用是什么?
题目大意为:JS 环境下,如何让 a == 1 && a == 2 && a == 3 这个表达式返回 true ?这道题目乍看之下似乎不太可能,因为在正常情况下,一个变量的值如果没有手动修改,在一个表达式中是不会变化的。
10道JavaScript题目:累加函数addNum、实现一个Person类、实现一个arrMerge 函数、实现一个toCamelStyle函数、setTimeout实现重复调用、实现一个bind函数、实现一个Utils模块、输出一个对象自身的属性
面试开场白总缺少不了自我介绍,一方面是面试官想听听你对自己的介绍,顺便有时间看看简历上的描述,是否与口述一致。另一方面就是看看你简历上做过什么项目,用到了哪些技术栈,一会儿好提问你。
把面试当做学习,这个过程你会收益很大。前端知识很杂,可能实际工作中用到的技术,像框架都是跟着公司的要求走的,像我最近也在看React啦,Vue和React都对比着再学习
vue上手可以说是比较轻松而且简单,如果你用过angular,react,你也会很喜欢vue。vue的核心思想依旧是:构建用户界面的渐进式框架,关注视图的变化。这也是为什么新建的文件是结构是template script style
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!