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 笔试题的主要内容,如果未能解决你的问题,请参考以下文章

前端笔试题----JavaScript部分

这10道javascript笔试题你都会么

JavaScript递归树形扁平数组笔试题reduceforEachconcat

这10道javascript笔试题你都会么

JavaScript笔试题(js高级代码片段)

2019-12-5笔试题