JavaScript 笔试题
Posted Leo_wlCnBlogs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 笔试题相关的知识,希望对你有一定的参考价值。
收藏 javascript-questions 这个仓库很久了,趁着周末来锻炼下自己的 JS 基础水平
因为逐渐也在承担一些面试工作,顺便摘录一些个人觉得比较适合面试的题目和方向
事件流(捕获、冒泡)
以下代码点击结果是啥?
<div onclick="console.log(\'div\')">
<p onclick="console.log(\'p\')">
Click here!
</p>
</div>
答案
call、apply、bind
以下代码输出结果是啥?
const person = name: \'Lydia\' ;
function sayHi(age)
return `$this.name is $age`;
console.log(sayHi.call(person, 21));
console.log(sayHi.bind(person, 21));
答案
new
以下代码输出结果是啥?
function Car()
this.make = \'Lamborghini\';
return make: \'Maserati\' ;
const myCar = new Car();
console.log(myCar.make);
答案
JSON.stringify
以下代码输出结果是啥?
const settings =
username: \'lydiahallie\',
level: 19,
health: 90,
;
const data = JSON.stringify(settings, [\'level\', \'health\']);
console.log(data);
答案
const settings =
username: \'lydiahallie\',
level: 19,
health: 90,
;
const data = JSON.stringify(settings, null, \'hello\');
console.log(data);
/*
hello"username": "lydiahallie",
hello"level": 19,
hello"health": 90
*/
函数参数解构
以下代码输出结果是啥?
const myFunc = ( x, y, z ) =>
console.log(x, y, z);
;
myFunc(1, 2, 3);
答案
函数中的剩余参数
以下代码输出结果是啥?
function getItems(fruitList, ...args, favoriteFruit)
return [...fruitList, ...args, favoriteFruit]
getItems(["banana", "apple"], "pear", "orange")
答案
展开运算符
以下代码输出结果是啥?
const person =
name: \'Lydia\',
age: 21,
;
const changeAge = (x = ...person ) => (x.age += 1);
const changeAgeAndName = (x = ...person ) =>
x.age += 1;
x.name = \'Sarah\';
;
changeAge(person);
changeAgeAndName();
console.log(person);
答案
||
以下代码输出结果是啥?
const one = false || || null;
const two = null || false || \'\';
const three = [] || 0 || true;
console.log(one, two, three);
答案
falsy
以下哪些值是假值?
0;
new Number(0);
(\'\');
(\' \');
new Boolean(false);
undefined;
答案
对象中 key 重复
以下代码输出结果是啥?
const obj = a: \'one\', b: \'two\', a: \'three\' ;
console.log(obj);
答案
Array Operators
有好几道和数组操作有关的题
这题 主要考查 push 操作返回 push 后的数组长度,这题 也是类似
这题 主要考查哪些数组操作会改变原来的数组(splice)
这题 主要考查 reduce 的使用
[1, 2, 3, 4].reduce((x, y) => console.log(x, y));
这题还是比较有意思的,reduce 函数调用中如果有第二个参数,则会被当作第一次迭代中的 previous 值(也就是第一个参数 x
),如果没有第二个参数,则数组第一个元素会被当作第一次迭代的 previous
所以上面的代码,如果 reduce 有第二个参数,会被迭代 4 次,如果没有,则是迭代三次
再看代码,因为没有第二个参数,所以第一次迭代参数是 1
和 2
,reduce 迭代中的返回会被当作下次迭代的 previous,但是这里没返回,所以就是 undefined
,而第二个参数 y
就是数组元素
Object Operators
这题 主要考查用 Object.defineProperty
定义的对象中的属性默认不可枚举,不能用 Object.keys
拿到
这题 主要考查 Object.freeze
,顾名思义它能冰冻住对象,使得对象不能增、删、修改键值对(但是注意,它只是 freeze 了第一层,可以参考 这题)
这题 考查 Object.seal
,它能阻止对象新增、删除属性,但是对于已有的属性依然可以修改其值(注意和 freeze 一样同样只是第一层)
delete
以下代码输出结果是啥?
const name = \'Lydia\';
age = 21;
console.log(delete name);
console.log(delete age);
答案
暂时性死区
这两题都是暂时性死区相关,注意下 var
和 let
const
是有差异的,var
的话会变量声明提升(但是是 undefined),但是 let
和 const
并不会初始化
Object toString
以下代码输出结果是啥?
const animals = ;
let dog = emoji: \'javascript 笔试题之删除数组重复元素
笔试时紧张没写出来,静下心后发现简单的要死.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>删除数组重复元素</title>
</head>
<body>
<script>
/**
* 删除数组重复元素
* @param array 目标数组
* @return 返回去重后的数组
*/
function array_unique(arr) {
//外层循环控制次序
for (var i = 0; i < arr.length; i++) {
//内层循环查找是否有重复值
for (var k = i + 1;k < arr.length; k++) {
if(arr[i] == arr[k]) {
arr.splice(k, 1);
}
}
}
return arr;
}
var arr = [12,3,2,3,5,5,6,7];
console.log(array_unique(arr));
</script>
</body>
</html>
输出结果:
[12, 3, 2, 5, 6, 7]
以上是关于JavaScript 笔试题的主要内容,如果未能解决你的问题,请参考以下文章