js语法
一.CSS和JS在网页中的放置顺序是怎样的?
css在html文档里一般放在head内,title后,用script包裹
js一般放在body内最下方
二.解释白屏和FOUC
白屏和fouc是把css放在body尾部时,在浏览器不同工作模式下产生的:
在加载完html和css后才渲染呈现的工作模式下,即浏览器根据放置顺序先加载html,html加载完后再加载css样式,然后才在页面呈现html和css,那么在css加载完前的这一段时间,页面不会呈现内容,此为白屏现象
在“边加载边显示”的工作模式下,浏览器在加载html时便会立即将它呈现出来,此时没有样式,html加载完后再去加载css,此时样式才显示出来,那么在打开页面看到元素内容到出现css样式的这一段时间看到的变化称为fonc,即无样式内容闪烁。
另外因为js会阻止后面内容的执行和下载,所以当把js放在head内时,同样会出现白屏现象。
三.async和defer的作用是什么?有什么区别
async和defer是让浏览器在遇到js时,不要停止对html的解析
区别在于,async在js下载完后停止html的解析,执行js,js执行完后再进行html解析;而defer推迟在js下载完后不会立即执行js,会等到html解析完后再执行js
四.简述网页的渲染机制?
1.根据用户的访问请求去获得网站的资源,html文档、css样式、js文档等;
2.解析html标签,构建dom树
3.解析css标签,构建cssom树
4.组合dom树和cssom树生成渲染树(render tree)
5.布局,计算每个节点的几何结构
6.调用浏览器,将其绘制到屏幕上
五. JavaScript 定义了几种数据类型? 哪些是简单类型?哪些是复杂类型?
6种,分别是null(空指针,可用来释放空间),undefined(有声明,无赋值,有指针,无指向),boolean,number,string,object(无序键值对组合)
前面5个为简单类型,object为复杂类型。注意null和undefined是两个特殊的值。
六. NaN、undefined、null分别代表什么?
NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,包括自己
Undefined类型只有一个值undefined,表示变量只被声明,没有被初始化,也就是有这个指针,但是这个指针没有指向任何空间
Null类型只有一个值:null,表示空指针,也就是不存在的东西,可以用来释放空间
六. typeof和instanceof的作用和区别?
typeof运算符返回一个值的数据类型,比如number、string、boolean,还可以是function,undefined,object
instanceof是用来确定一个对象是否是某个构造函数的实例,可以用来判断值的类型,例如[1,2,3] instanceof Array,它会返回true说明[1,2,3]是属于数组的一个实例,它的左边放置对象,右边放置构造函数;
区别:在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。这就需要用到instanceof来检测某个对象是不是另一个对象的实例。
1.完成如下代码判断一个变量是否是数字、字符串、布尔、函数
2.以下代码的输出结果
console.log(1+1)输出2;
console.log(“2”+”4”)输出24;
console.log(2+”4”)输出24;
console.log(+new Date())输出1462523357257;
console.log(+”4”)输出4;
3.以下代码的输出结果
var a = 1;
a+++a;(3,此时a等于2)
typeof a+2;
输出为字符串”number2”
4.遍历数组,把数组里的打印数组每一项的平方
var arr = [3,4,5]
// todo..
// 输出 9, 16, 25
5.遍历 JSON, 打印里面的值
var obj = {
name: ‘hunger’,
sex: ‘male’,
age: 28
}
//todo …
// 输出 name: hunger, sex: male, age:28
6.下面代码的输出是? 为什么
console.log(a);
var a = 1;
console.log(a);
console.log(b);
第一个log 输出 undefined 因为变量提升 但未进行赋值;
第二个log 输出 1 因为给a赋值了是1;
第三个log 输出 b is not defined,因为b未进行定义,不可使用;