1.CSS和JS在网页中的放置顺序是怎样的?
(1)通常,CSS放在head标签里面;
(2)而JS放在body标签内容的最后。
2.解释白屏和FOUC
白屏:如果CSS样式放在文档的底部,每个浏览器的渲染机制不同,但都是从上到下解析的,这时有的浏览器的渲染机制是先加载样式,而样式是在文档底部,所以在渲染时中间的内容部分还未解析就可能引起了白屏。
FOUC:如果CSS样式放在文档的底部,浏览器都是从上往下解析的,而先加载页面内容,再加载CSS样式,然后网页内容会突然显示样式,因此出现无样式内容闪烁。
3.async和defer的作用是什么?有什么区别
作用:用于JS加载异步,没有 defer或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,读到就加载并执行。
async:有 async,加载和渲染后续文档元素的过程将和 script.js的加载与执行并行进行,是不保证顺序的。
defer:有 defer,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded事件触发之前完成,是有顺序的。
4.简述网页的渲染机制
(1)解析HTML标签,构建DOM树;
(2)解析CSS标签,构建CSSOM树;
(3)把DOM和CSSOM组合成渲染树;
(4)在渲染树的基础上进行布局,计算每个节点的几何结构;
(5)把每个节点绘制到屏幕上。
5.JavaScript 定义了几种数据类型? 哪些是简单类型?哪些是复杂类型?
定义了6种数据类型;
简单类型:1)Null;2)Undefined;3)Boolean;4)Number;5)String;
复杂类型:Object
6.NaN、undefined、null分别代表什么?
NaN:表示非数字,NaN和任何值都不相等;
undefined:表示变量只被声明,没有赋值;
null:代表一个空指针,不存在的东西。
7.typeof和instanceof的作用和区别?
typeof:返回一个值的数据类型,可以使用 typeof 来获取一个变量是否存在,typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
instanceof:用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
8.完成如下代码判断一个变量是否是数字、字符串、布尔、函数
function isNumber(el){
if (type of el==="number"){
return true;
}
else{
return false;
}
}
function isString(el){
if (type of el==="string"){
return true;
}
else{
return false;
}
}
function isBoolean(el){
if (type of el==="boolean"){
return true;
}
else{
return false;
}
}
function isFunction(el){
if (type of el==="function"){
return true;
}
else{
return false;
}
}
var a = 2,
b = "jirengu",
c = false;
alert( isNumber(a) ); //true
alert( isString(a) ); //false
alert( isString(b) ); //true
alert( isBoolean(c) ); //true
alert( isFunction(a)); //false
alert( isFunction( isNumber ) ); //true
9.以下代码的输出结果是?
console.log(1+1); //2
console.log("2"+"4"); //24
console.log(2+"4"); //24
console.log(+new Date()); //1473391556905(1971年至今的毫秒总数)
console.log(+"4");//4
10.以下代码的输出结果是?
var a = 1;
a+++a; //3;等同于(a++)+a,而a++===1,a = 2
typeof a+2; //number2,typeof的优先级高于+
11.遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5];
for (i=0; i<arr.length; i++){
console.log(arr[i]*arr[i]);
}
// 输出 9, 16, 25
12.遍历 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for (k in obj) {
console.log(obj[k]);
}
// 输出 name: hunger, sex: male, age:28
13.下面代码的输出是? 为什么?
console.log(a);//undefined,由于变量提升,相当于var a; console.log(a)所以只声明了变量,没有赋值
var a = 1;
console.log(a);//1,声明了变量a,而且a的值为1
console.log(b);//b is not defined(…),因为没有声明变量b,所以报错