面试题一

107 阅读2分钟

经典笔试题

JS有哪些常用数据类型:

基本数据类型:Boolean、Number、String、Undefined、null 引用类型:Function、Object、Array

     let bl = false
        let str = "123"
        let num = 123
        let udf = undefined
        let nl = null
        let arr = []
        let obj = {}
        let fn = function () { }
        console.log(typeof bl, typeof str, typeof num, typeof udf, typeof nl, typeof arr, typeof obj, typeof fn)

image.png

image.png

请使用flex做一个未知高度上下左右居中布局

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .fatherBox {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 500px;
            height: 800px;
            border: 1px solid red;
        }

        .sonBox {
            width: 200px;
            height: 300px;
            background-color: rgb(34, 36, 143);
        }
    </style>
</head>

<body>
    <div class="fatherBox">
        <div class="sonBox"></div>
    </div>
</body>

</html>

image.png

image.png

在父盒子中使用

  • display:flex;
  • justify-content:center;
  • align-items:center;

NaN是什么,用typeof会输出什么?

  • NaN是非数字,它与任何类型拼接都是NaN,与任何值都不相对包括本身。
  • isNaN()用来判断是否为非数字,是为false,不是为true
  • NaN用typeof输出是number字符串
let NaN1 = NaN
        console.log(NaN === NaN);
        console.log(NaN === 123);
        console.log(isNaN(123))
        console.log(isNaN('我'))
        console.log(typeof NaN);

image.png

如何判断一个对象是不是空对象

方法一:

  let obj1 = {}
        let obj2 = { name: "小明" }
        //方法一:
        function isEmptyObj1(obj) {
            for (let key in obj) {
                return console.log(false);
            }
            return console.log(true);
        }
        isEmptyObj1(obj1) //true 是空对象
        isEmptyObj1(obj2) //false 不是空对象
        //方法二: ES6新方法,将传入对象的键组成数组 Object.keys(obj)返回的是一个数组
        function isEmptyObj2(obj) {
            let arr = Object.keys(obj)
            if (arr.length !== 0) {
                return console.log(false);
            }
            return console.log(true);
        }
        isEmptyObj2(obj1) //true 是空对象
        isEmptyObj2(obj2)//false 不是空对象

js添加监听事件的方法

  1. 元素.onclick() onclick可以替换为其他事件类型 只能触发一次 冒泡触发 会被同事件类型覆盖
  2. 元素.addEventListener() 第一个参数事件类型 、第二个参数回调函数、第三个参数true为冒泡触发 false为捕获触发、需要用removeEventListener()移除事件
  let btn = document.querySelector('button')
        //第一种 只能触发一次  冒泡触发 会被同事件类型覆盖
        btn.onclick = function () {
            alert('监听成功!');
        }
        btn.onclick = function () {
            console.log(123);
        }
        //第二种 第一个参数事件类型 、第二个参数回调函数、第三个参数true为冒泡触发 false为捕获触发
        btn.addEventListener('click', function () {
            alert('监听成功!')
        })

如何判断数组类型

 let arr = [1, 2, 3]
        console.log(typeof arr) //Object
        console.log(arr instanceof Array)// true
        console.log(arr instanceof Object)//true

let arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']从2开始删3个元素,从数组后面添加0,1

let arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
        //从2开始删3个元素
        arr.splice(2, 3)
        //从数组后面添加0,1
        arr.splice(arr.length, 0, 0, 1)
        console.log(arr);

数组 let arr = [100, [100, 200, [100, 'a', 200], 300], [100, [100, 200], 300], 300],获取当中的a值。

  //请取到数组当中a的值
        let arr = [100, [100, 200, [100, 'a', 200], 300], [100, [100, 200], 300], 300]
        let num = null
        function findArr(arr, find) {

            arr.forEach(v => {

                if (typeof v === 'object') {
                    findArr(v, find)
                }
                else if (v === find) {
                    num = find
                }
            })

        }
        findArr(arr, 'a')
        console.log(num);