经典笔试题
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)
请使用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>
在父盒子中使用
- 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);
如何判断一个对象是不是空对象
方法一:
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添加监听事件的方法
- 元素.onclick() onclick可以替换为其他事件类型 只能触发一次 冒泡触发 会被同事件类型覆盖
- 元素.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);