1. 什么是web标准
简单的说,就是HTML、CSS、JavaScript这三者分离。WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如 W3C DOM)、ECMAScript等。
2. 2.css优先级
! important > 行间 > ID > class > 通配符
3. 网页的解析顺序
页面加载顺序:解析HTML结构、加载外部脚本和样式表文件、解析并执行脚本代码、构造HTML DOM模型、加载图片等外部文件、页面加载完毕。
4. js中全局变量属于window,怎样解决他不属于window
使用箭头函数、改变指向后全局变量就不在属于window了
5.js中的分号要在什么时候加
事件函数,所有的大括号后面都要加分号
等号右边必须加分号
6. return的一些特性
函数没有返回值会返回undefined,有return没有值,也返回undefined;
会阻止后面代码的执行
作用:
阻止后面代码的执行
封装函数
7. 面向对象的三大特性
三大特性是:封装,继承,多态
8. 定时器
setTimeout clearTiomeout 可以模拟循环
setInterval clearInterval
9.阻止默认事件
return false; //事件绑定
event.preventDefault(); //事件监听
event.returnValue = false; //IE下使用
10. js中批量修改样式
//第一种
setStyle(oDiv, {width: '200px', background: 'red'});
//第二种 使用cssText
oDiv.style.cssText="width: 200px; height:300px; background:yellow;";
//使用第三种 with (不推荐使用)
with(oDiv.style) {
width='300px';
height='500px';
background='yellow';
}
11. 获取非行间样式
window.onload = function(){
var oDiv1 = document.getElementById("oDiv1");
var oDiv2 = document.getElementById("oDiv2");
//获取行内样式
alert(oDiv2.style.background)
//获取非行内样式 currentStyle是IE中m的属性,getComputedStyel是其他浏览器的方法
//在非行间样式中,style属性只能去赋值,在行间样式中才能获取样式
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr]
}else{
return window.getComputedStyle(obj,fa6lse)[attr];
}
}
alert(getStyle(oDiv1,"background"))
}
12. 循环中break和continue
break是结束整个循环体,continue是结束单次使用
break也可以在while中使用
13. js语句中的条件语句和循环语句
条件语句:
//第一种 【if语句】对于区间的一个判断,只有一个语句时可以不写大括号
if( 条件 ){
//条件为true时执行的代码
}else{
//条件为false时执行的代码
}
//第二种 【switch语句】离散型的判断
switch( 条件 ){
case 条件1:
//条件为true时执行的代码
break;
case 条件2:
//条件为true时执行的代码
break;
case 条件3:
//条件为true时执行的代码
break;
default:
//默认要执行的代码
}
循环语句:
//第一种 【while语句】
while( 循环的条件 ){
//条件为真时重复循环,否则退出循环
}
//第二种 【do while语句】不管条件是否满足,都会循环一次
do{
//循环体
}while(判断逻辑)
//第三种 【for语句】
for( 初始化; 循环条件; 变量的更新 ){
//代码
}
//第四种 【for in语句】
for(variable in object){
statement
}
/***以下两种在IE6-8下都不兼容***/
//第五种 【forEach()】
var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
input[index] = item*10;
})
console.log(res);//-->undefined;
console.log(ary);//-->会对原来的数组产生改变;
//第六种 【map()】
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
return item*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1];
14. 三目运算符
变量 = 条件?语句:语句
15. js中的真假值
真:true,非空字符串,非0数字,非空对象
假:false,0,空字符串,空对象,null,undefined,NaN
16. 基本数据类型
symbol (ES6引入的新的数据类型,表示独一无二的值)
undefined 未定义
boolean 布尔
string 字符串
null 空
number 数字
object 对象
检测数据类型:typeOf() instanceOf()
17.几种出现undefined的情况
- 未声明的变量
- 已声明未定义的变量
- 传参没有值
- 访问不存在的属性
18.隐式转换
** "+"运算符 **
var a = 1 + '2';
console.log(a) //12
当运算符“ +” 两边一个是数字类型, 一个是字符串类型时, js引擎规定进行字符串连接运算而非算术加运算。 利用运算符“ +” 这个特性,可以很方便的将Number转换成String
** "-"运算符 **
var a = 11, b = '5';
var c = a - b;
alert(typeof c); //--> number
-”运算符会把字符串b隐式的转换成数字5再进行算术减法运算。
19. 显式转换
转换为数值类型:
Number(mix)
parseInt(string,radix) 转成整数
parseFloat(string) 转成浮点数
这三个函数可以把非数值转换为数值。第一个函数,即转型函数Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。
转换为字符串类型:
toString(radix)
String(mix)
转换为布尔类型:
Boolean(mix)
20. 解决this在某些情况不能使用的问题
1.使用箭头函数
2.定时器外层写一个变量
21. 解决i在某些情况不能使用的问题
1. 循环中加事件,事件不能用i,
自定义属性(IE不支持,自定义属性不能写在行间)
2. 循环中加定时器,定时器不能用i
封闭空间(自执行函数)