JavaScript 语法

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
17801E6A-ABFD-46A2-AE05-DBA71FA3C07D.png

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

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,所以报错

你可能感兴趣的:(JavaScript 语法)