js的基础面试题
JS中基本数据类型有几种?分别是哪些
常用的有六种数据类型
分别是
number 数值类型 string 字符串类型 null 空 undefined 未定义 boolean 布尔值 object 引用类型
let\\var\\const的区别是什么?
let 是ES6新增的一种变量声明方式 let不存在变量提升,let不允许在同一个作用域中重复声明,存在块级作用域
var存在变量提升,var可重复声明,后声明的变量会覆盖前面声明的变量,不存在块级作用域
const声明一个只读的常量,值不能改变,不存在块级作用域
强制转换为数值类型有哪些方法?
使用Number()函数来强制转换为数值类型
使用parseInt() 转换为整数数值类型
使用parseFloat() 转换为浮点型数字类型
什么叫做全局变量和局部变量,有什么区别?
全局变量指声明的变量在全局都生效,一般指定义在函数外的变量
局部变量指声明的变量只在局部生效,一般指定义在函数内的变量
数组遍历的方式有哪些?
使用for循环遍历
使用forEach循环遍历
数组系统函数有哪些?他们的特点是什么?你在开发中何时进行使用
不改变原数组:
join()连接字符,自定一个字符来连接数组内的元素,返还一个字符串,不会改变原数组
concat()用于连接两个或多个数组,返还一个新的数组,不会改变原数组
slice()截取数组内元素,第一个变量为起始的索引值,第二个变量为结束的索引值,如果不设置则截取到数组结束,返还截取的元素,不会改变原数组
arr.sort(function(a,b){
return a-b / b-a
)
数组排序,将数组按照ASCII码排序,定义变量ab,a-b为升序,b-a为降序
改变原数组
push()从尾部压入一个元素,返还数组的长度,会改变原数组
pop()从尾部弹出一个元素,返还弹出的元素,会改变原数组
unshift()从头部压入一个元素,返还数组的长度,会改变原数组
shift()从头部弹出一个元素,返还弹出的元素,会改变原数组
splice()修改数组,(起始的索引值,删除的个数,添加的内容),删除的个数要和添加的个数相同
includes()查找元素,用于查找数组中是否存在某个元素,返回值为true或者false
indexOf()查找元素,用于查找数组中是否存在某个元素,返回值为数组中第一次出现的索引值,不存在则为-1
lastIndexOf()查找元素,用于查找数组中是否存在某个元素,返回值为数组中最后一次出现的索引值,不存在则为-1
如何生成一个任意区间的随机数
Math.random()生成0-1之间的随机数,不包括1
使用math.random()来乘以想要的数字
let num=Math.random()*(max-min)+min
let num=Math.floor(Math.random()*(max-min+1)+min )
如何遍历一个对象
使用for in 来遍历对象
for(let 变量 in 对象名){}
定时器有哪些?他们有何区别,在什么时候使用
定时器分为循环定时器(setInterval)和延迟定时器(setTimeout)
循环定时器会无限循环执行,想一直执行一个事件可以使用循环定时——无限循环,一直执行
延迟定时器只执行一次,想只执行一次事件可以使用延迟定时器——延迟执行,仅执行一次
在js中如何跳转页面
使用location.href来跳转页面
window.href 获取当前的url地址
window.href=url网址 实现在js内 页面跳转
在js中如何返回上一个历史记录页面
使用window.history.back()来返回上一个页面
使用window.history.go(-1)来返回上一个页面
谈谈什么叫做事件冒泡和事件捕获,如何阻止事件冒泡
事件捕获指当鼠标点击或触发dom事件时,事件从外层到内层进行事件传播
事件冒泡指当鼠标点击或触发dom事件时,从内层到外层进行事件传播
在事件中使用stoppropagation()函数来阻止事件冒泡
event.stopPropagation( )
网页中有哪些默认行为,如何阻止
网页默认行为
a标签的链接跳转
按钮的提交submit
form 表单
reset 重置页面
如何阻止
在事件中使用preventDefault()来阻止默认行为
event.preventDefault( )
绑定事件的方式有哪些?有何区别
给文件名添加属性绑定事件(标签上绑定事件)
使用事件监听绑定事件—— dom.addEventListener(‘事件类型’,function(){})
给节点赋值来绑定事件(dom节点绑定事件:dom.οnclick=function(){ )
谈谈你对语义化的理解
指看到标签名就知道其含义
常见的结构化标签有哪些
header,footer,article,aside,nav,section
HTML5新增的表单类型有哪些
color颜色选择框
range滑块
number数值
search搜索
tel 电话 (没有任何效果)
带验证效果
url 网址
email 邮箱
时间日期
date日期
time时间
datatime-local时间日期
month月
week周
音频、视频的常见属性、方法事件有哪些
常见属性
音频控件 controls 自动播放 autoplay 循环播放 loop 静音播放 muted 预加载 preload 不加载 none 自动加载 auto 加载元数据 meta
duration 总时长
currentTime 当前播放时长
方法
play() 开始播放
pause() 暂停播放
事件
onplay 播放
onpause 暂停播放
onended 结束播放
cookie\\localStorage\\sessionStorage的区别有哪些?操作方法有哪些
cookie(客户端缓存)
存储空间小,只有4kb
会携带cookie数据占用带宽
cookie操作方式较为繁琐,需要手动封装
就是网页保存的一些数据,一般为小型文本文件,分永久性和会话型
本地存储
存储空间较大,5M及以上
不携带任何数据
提供统一API,操作简单
localStorage 永久性存储 关闭浏览器 缓存仍然存在
sessionStorage 会话存储 关闭浏览器 缓存清空
操作方法
getItem( ) 获取或修改缓存
setItem( ) 设置缓存
removeItem( ) 移除缓存
clear( ) 清除缓存
弹性盒对比浮动布局有何优势
布局目标的实现,属性赋值非常松散。 严重依赖于页面结构与内容实际页面大小。 当页面属性发生变化的时候,页面的布局取值都要重新调整。 不是很能够灵活的引用页面结构的变化。 用弹性盒子布局: 相关的css属性赋值,比较统一。 布局方式灵活,可以应对页面结构元素变化。 实现了一种整体控制方法,比较直观,高效。
弹性盒主轴、侧轴对齐方式有哪些
justify-content 主轴对齐方式
-
space - around (两端环绕对齐)
-
space - between(两端对齐)
-
center (居中)
-
flex-start(主轴起点对齐)
-
flex-end (主轴终点对齐)
-
space-evenly(平分对齐)
align-items 侧轴对齐方式
-
flex-start(侧轴起点对齐)
-
flex-end (侧轴终点对齐)
-
center (居中)
transform变换中常用的有哪些属性,分别有何作用
-
平移translate
-
旋转rotate
-
缩放 scale
-
扭曲 skew
动画animation和过渡transition的区别
-
1,transition 是过渡,是样式值的变化的过程,只有开始和结束; animation 其实也叫关键帧,通过和 keyframe 结合可以设置中间帧的一个状态
-
2,animation 可以设置很多的属性,比如循环次数,动画结束的状态等等, transition 只能触发一次;
-
3,animation 配合 @keyframe 可以不触发时间就触发这个过程, transition 需要通过 hover 或者 js 事件来配合触发;