1,一个页面结构基本组成?
答:
html: 不仅可以包含文字,还可以包含图片、链接,甚至音乐、程序等非文字元素的标记语言 (展示给用户,不能太单调,css)
css: 是一种用来表现HTML的计算机语言,能使HTML页面变得更加美观要展示给用户光漂亮是不够的,用户还要能够动态的操作HTML页面,也就是让浏览器和用户之间的交互不仅仅是用户能浏览html中的内容,还要能对html页面操作,JavaScript
JavaScript: 用来给HTML网页增加动态功能、交互行为
2,css选择器和优先级
答:全局选择器(通配符*)
-
标签选择器(body,div,p,ul,li)
-
类选择器(.)
-
ID选择器(#)
-
组合选择器(.head .head_loge,两选择器之间用空格隔开)
-
后代选择器(#head .nav li ul,从父级到子孙集的选择器)
-
子选择器(div>p)
-
群组选择器(div,span,img{color:red;},即将具有相同样式的标签分组显示)
-
继承选择器(div p,两选择器用空格键分开)
-
伪类选择器(链接样式a元素的伪类::link(未被访问),:visited(已访问),:active(被选择),:hover(当鼠标悬停在链接上))
-
字符串匹配的属性选择符(^(开始),$(中间),*(结尾))
-
css相邻兄弟选择器(如h1+p)
CSS选择器优先级:!important >行内样式>ID选择器>Class选择器>标签>通配符
规律:那个离标签近,那个选择器权重就大
3,什么是闭包?闭包产生的背景?有什么问题?怎么解决?举一个闭包的例子?
答:闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包的用途:闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
使用闭包的注意点:
-
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除
-
闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
4,Js有哪些内置对象?你工作中常用那种?列举几个你常用的方法?
答:
一:Arguments 函数参数集合
-
arguments[ ] 函数参数的数组
-
Arguments 一个函数的参数和其他属性
-
Arguments.callee 当前正在运行的函数
-
Arguments.length 传递给函数的参数的个数
二:Array 数组
-
length 属性 动态获取数组长度 join() 将一个数组转成字符串。返回一个字符串。
-
reverse() 将数组中各元素颠倒顺序
-
delete 运算符 只能删除数组元素的值,而所占空间还在,总长度没变(arr.length)。
-
shift()删除数组中第一个元素,返回删除的那个值,并将长度减 1
-
pop() 删除数组中最后一个元素,返回删除的那个值,并将长度减 1。
-
unshift() 往数组前面添加一个或多个数组元素,长度要改变。 arrObj.unshift(“a” , “b,“c”)
-
push() 往数组结尾添加一个或多个数组元素,长度要改变。arrObj.push(“a” , “b” , “c”)
-
concat( )连接数组 slice( ) 返回数组的一部分 sort( ) 对数组元素进行排序 splice( ) 插入、删除或替换数组的元素
-
toLocaleString( ) 把数组转换成局部字符串 toString( ) 将数组转换成一个字符串
三:Boolean 布尔对象
-
Boolean.toString( ) 将布尔值转换成字符串
-
Boolean.valueOf( ) Boolean 对象的布尔值
四:Date 日期时间
-
Date.getDate( ) 返回一个月中的某一天
-
Date.getDay( ) 返回一周中的某一天
-
Date.getFullYear( ) 返回 Date 对象的年份字段
-
Date.getHours( ) 返回 Date 对象的小时字段
-
Date.getMilliseconds( ) 返回 Date 对象的毫秒字段
-
Date.getMinutes( ) 返回 Date对象的分钟字段
-
Date.getMonth( ) 返回 Date 对象的月份字段
-
Date.getSeconds( ) 返回 Date对象的秒字段
-
Date.getTime( ) 返回 Date 对象的毫秒表示
-
Date.getTimezoneOffset( ) 判断与GMT 的时间差
-
Date.getUTCDate( ) 返回该天是一个月的哪一天(世界时)
-
Date.getUTCDay( )返回该天是星期几(世界时)
-
Date.getUTCFullYear( ) 返回年份(世界时)
-
Date.getUTCHours( ) 返回Date 对象的小时字段(世界时)
-
Date.getUTCMilliseconds( ) 返回 Date 对象的毫秒字段(世界时)
-
Date.getUTCMinutes( ) 返回 Date 对象的分钟字段(世界时)
-
Date.getUTCMonth( ) 返回Date 对象的月份(世界时)
-
Date.getUTCSeconds( ) 返回 Date 对象的秒字段(世界时)
-
Date.getYear( ) 返回 Date 对象的年份字段(世界时)
-
Date.parse( ) 解析日期/时间字符串
-
Date.setDate( ) 设置一个月的某一天
-
Date.setFullYear( ) 设置年份,也可以设置月份和天
-
Date.setHours( ) 设置 Date 对象的小时字段、分钟字段、秒字段和毫秒字段
-
Date.setMilliseconds() 设置 Date 对象的毫秒字段
-
Date.setMinutes( ) 设置 Date 对象的分钟字段和秒字段
-
Date.setMonth( ) 设置 Date 对象的月份字段和天字段
-
Date.setSeconds( ) 设置 Date对象的秒字段和毫秒字段
-
Date.setTime( ) 以毫秒设置 Date 对象
-
Date.setUTCDate( )设置一个月中的某一天(世界时)
-
Date.setUTCFullYear( ) 设置年份、月份和天(世界时)
-
Date.setUTCHours( ) 设置 Date 对象的小时字段、分钟字段、秒字段和毫秒字段(世界时)
-
Date.setUTCMilliseconds( ) 设置 Date 对象的毫秒字段(世界时)
-
Date.setUTCMinutes( ) 设置 Date 对象的分钟字段和秒字段(世界时)
-
Date.setUTCMonth( ) 设置 Date 对象的月份字段和天数字段(世界时)
-
Date.setUTCSeconds( ) 设置 Date 对象的秒字段和毫秒字段(世界时)
-
Date.setYear( ) 设置 Date 对象的年份字段
-
Date.toDateString( ) 返回 Date 对象日期部分作为字符串
-
Date.toGMTString( ) 将 Date 转换为世界时字符串
-
Date.toLocaleDateString( ) 回 Date 对象的日期部分作为本地已格式化的字符串
-
Date.toLocaleString( ) 将 Date 转换为本地已格式化的字符串
-
Date.toLocaleTimeString( ) 返回 Date 对象的时间部分作为本地已格式化的字符串
-
Date.toString( ) 将 Date 转换为字符串
-
Date.toTimeString( ) 返回 Date 对象日期部分作为字符串
-
Date.toUTCString( ) 将 Date 转换为字符串(世界时)
-
Date.UTC( ) 将 Date 规范转换成毫秒数
-
Date.valueOf( ) 将 Date 转换成毫秒表示
五:Error 异常对象
-
Error.message 可以读取的错误消息
-
Error.name 错误的类型
-
Error.toString( ) 把 Error 对象转换成字符串
-
EvalError 在不正确使用 eval()时抛出
-
SyntaxError 抛出该错误用来通知语法错误
-
RangeError 在数字超出合法范围时抛出
-
ReferenceError 在读取不存在的变量时抛出
-
TypeError 当一个值的类型错误时,抛出该异常
-
URIError 由 URl 的编码和解码方法抛出 Function 函数构造器
-
Function.apply( ) 将函数作为一个对象的方法调用
-
Function.arguments[] 传递给函数的参数
-
Function.call( ) 将函数作为对象的方法调用
-
Function.caller 调用当前函数的函数
-
Function.length 已声明的参数的个数
-
Function.prototype 对象类的原型
-
Function.toString( ) 把函数转换成字符串
六:Math 数学对象
-
Math 对象是一个静态对象
-
Math.PI 圆周率。
-
Math.abs() 绝对值。
-
Math.ceil() 向上取整(整数加 1,小数去掉)。
-
Math.floor() 向下取整(直接去掉小数)。
-
Math.round() 四舍五入。
-
Math.pow(x,y) 求 x 的 y 次方。
-
Math.sqrt() 求平方根。
-
Number 数值对象
-
Number.MAX_VALUE 最大数值
-
Number.MIN_VALUE 最小数值
-
Number.NaN 特殊的非数字值
-
Number.NEGATIVE_INFINITY 负无穷大
-
Number.POSITIVE_INFINITY 正无穷大
-
Number.toExponential( ) 用指数计数法格式化数字
-
Number.toFixed( ) 采用定点计数法格式化数字
-
Number.toLocaleString( ) 把数字转换成本地格式的字符串
-
Number.toPrecision( ) 格式化数字的有效位
-
Number.toString( ) 将—个数字转换成字符串
-
Number.valueOf( ) 返回原始数值
七:Object 基础对象
-
Object 含有所有 JavaScript 对象的特性的超类
-
Object.constructor 对象的构造函数
-
Object.hasOwnProperty( ) 检查属性是否被继承
-
Object.isPrototypeOf( )一个对象是否是另一个对象的原型
-
Object.propertyIsEnumerable( ) 是否可以通过 for/in 循环看到属性
-
Object.toLocaleString( ) 返回对象的本地字符串表示
-
Object.toString( ) 定义一个对象的字符串表示
-
Object.valueOf( ) 指定对象的原始值
八:RegExp 正则表达式对象
-
RegExp.exec( ) 通用的匹配模式
-
RegExp.global 正则表达式是否全局匹配
-
RegExp.ignoreCase 正则表达式是否区分大小写
-
RegExp.lastIndex 下次匹配的起始位置
-
RegExp.source 正则表达式的文本
-
RegExp.test( ) 检测一个字符串是否匹配某个模式
-
RegExp.toString( ) 把正则表达式转换成字符串
九:String 字符串对象
-
Length 获取字符串的长度。如:var len = strObj.length
-
toLowerCase() 将字符串中的字母转成全小写。如:strObj.toLowerCase()
-
toUpperCase() 将字符串中的字母转成全大写。如:strObj.toUpperCase()
-
charAt(index) 返回指定下标位置的一个字符。如果没有找到,则返回空字符串。
-
substr() 在原始字符串,返回一个子字符串
-
substring() 在原始字符串,返回一个子字符串。
-
split() 将一个字符串转成数组。
-
charCodeAt( ) 返回字符串中的第 n 个字符的代码
-
concat( ) 连接字符串
-
fromCharCode( ) 从字符编码创建—个字符串
-
indexOf( )返回一个子字符串在原始字符串中的索引值(查找顺序从左往右查找)。如果没有找到,则返回-1。
-
lastIndexOf( )从后向前检索一个字符串
-
localeCompare( ) 用本地特定的顺序来比较两个字符串
-
match( ) 找到一个或多个正则表达式的匹配
5,事件包含哪些阶段
答:js事件的三个阶段分别为:捕获、目标、冒泡
-
捕获:事件由页面元素接收,逐级向下,到具体的元素
-
目标:具体的元素本身
-
冒泡:跟捕获相反,具体元素本身,逐级向上,到页面元素
6,什么是事件委托?事件委托的原理是什么?他有那些应用场景?
答:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。
也就是:利用冒泡的原理,把事件加到父级上,触发执行效果
原理:利用事件冒泡,只指定一个事件处理程序来管理某一类型的所有事件。
作用:减少DOM操作,节省内存空间,提高性能。
知识点链接:https://www.lagou.com/lgeduarticle/78217.html
7,如何阻止事件冒泡和事件的默认行为?
答:js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件的进一步传播。使用event.preventDefault()可以取消默认事件
9,Jq注册事件有几种方式?他们的区别是什么?举一个事件委托的例子?
10,浏览器存储的方式有哪些,区别
-
Cookie 在浏览器请求中 每次都会附加请求头发送给服务器;
-
localStorage 保存数据会一直保存,没有过期时间;
-
sessionStorage 仅当前页面有效,一旦关闭就会被释放;
知识点链接:https://www.cnblogs.com/lilistyle/p/13032381.html
12,前端异步加载有哪些
13,http状态码
知识点链接:https://blog.csdn.net/wzx19840423/article/details/79073087
网友评论