js基本概念语法

1. CSS和JS在网页中的放置顺序是怎样的?
我们可以把CSS和JS的代码分别放在单独的文件中,然后在HTML的头部通过link引入CSS文件
在body的底部通过引入JS代码文件。

2. 解释白屏和FOUC
导致白屏和FOUC的可能
在IE浏览器的某些情况下,样式放在底部,JS放在页面顶部,或者@import方式引入样式。
解决办法
样式引入放在HTML的头部,始终使用link方式引入文件,JS放在底部。
导致这种现象的原因是由于样式的加载晚于HTML

3. async和defer的作用是什么?有什么区别

async 和 defer 都是异步加载 js 脚本。

带有 defer 属性的<script>标签可以放置在文档的任何位置。对应的 JavaScript 文件将在页面解析到<script>标签时开始下载,但不会执行,直到 DOM 加载完成,即onload事件触发前才会被执行。当一个带有 defer 属性的 JavaScript 文件下载时,它不会阻塞浏览器的其他进程,因此这类文件可以与其他资源文件一起并行下载。

async 它的作用和 defer 一样,能够异步地加载和执行脚本,不因为加载脚本而阻塞页面的加载。但是有一点需要注意,在有 async 的情况下,JavaScript 脚本一旦下载好了就会执行,所以很有可能不是按照原本的顺序来执行的。如果 JavaScript 脚本前后有依赖性,使用 async 就很有可能出现错误。

4. 简述网页的渲染机制

解析 HTML 标签, 构建 DOM 树
解析 CSS 标签, 构建 CSSOM 树
把 DOM 和 CSSOM 组合成 渲染树 (render tree)
在渲染树的基础上进行布局, 计算每个节点的几何结构
把每个节点绘制到屏幕上 (painting)

5. JavaScript 定义了几种数据类型? 哪些是简单类型?哪些是复杂类型?

5种简单的数据类型:
1.Null :只有一个值:null,表示空指针。
2.Undefined: 也只有一个值:undefined,表示变量只被声明,但不指向任何空间。
3.Boolean: 两个值:ture,false。布尔值经常用在条件判断中。
4.Number: 不区分整数和浮点数,Number可以直接做四则运算,规则和数学一致。
5.String: 字符串是以单引号’或双引号”括起来的任意文本。’
复杂类型object

对象是一组由键-值组成的无序集合

6. NaN、undefined、null分别代表什么?

NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,包括自己

null表示一个“空”的值,它和0以及空字符串’’不同,0是一个数值,’’表示长度为0的字符串,而null表示“空”。
undefined表示值未定义。

大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用。

7. typeof和instanceof的作用和区别?

typeof运算符返回一个值的数据类型。

instanceof运算符判断一个变量是否是某个对象(类)的实例,返回值是布尔类型的。

8. 判断一个变量是否是数字、字符串、布尔、函数
判断一个变量是否是数字

1
2
3
function isNumber(el){
return typeof el==='number';
}

判断一个变量是否是字符串

1
2
3
function isString(el){
return typeof el==='string';
}

判断一个变量是否是布尔

1
2
3
function isBoolean(el){
return typeof el==='boolean';
}

判断一个变量是否是函数

1
2
3
function isFunction(el){
return typeof el==='function';
}

9. 以下代码输出结果是

1
2
3
4
5
console.log(1+1);          //2
console.log("2"+"4"); //"24"
console.log(2+"4"); //"24"
console.log(+new Date()); // 1452271614562
console.log(+"4"); //4

10. 以下代码输出结果是

1
2
3
var a=1;
a+++a; //相当于(a++)+a 输出结果为3
typeof a+2; //相当于(typeof a)+2 输出结果"number2",

11. 遍历数组,打印数组的每一项的平方

1
2
3
4
5
6
var arr=[3,4,5];
var i,x;
for (i=0;i<arr.length;i++){
x=arr[i]*arr[i];
console.log(x);
}

12. 遍历JSON,打印里面的值

1
2
3
4
5
6
7
8
9
10
var obj={
name:'hunger',
sex:'male',
age:28
};
var a=[];
for (var key in obj){
a.push(key+':'+obj[key]);
}
console.log(a.join(','));

13.下面的代码输出是?为什么

1
2
3
4
console.log(a); //变量a声明赋值在调用之后,此处返回undefined,表示声明但值为空
var a=1;
console.log(a);//这里就能正常调用了,返回值为1;
console.log(b);//b未声明,此处报错Error:b is not defined

文章目录
,