一、填空简答

1、console.log 怎么打印有颜色的字体?

2、“15”+5 的结果是?“15”-5 的结果是?

3、1 + - + + + - + 1 结果是?

4、(function() { var x = y = 1;})(); console.log(x); //结果是?console.log(y);//结果是?

5、var arr1 = [1,2],arr2=[1,2],arr3 = arr1;

1)、arr1 === arr2; arr1 === arr3 结果是?

2)、[][]; [1,2][1,2] 结果是?

6、请问 (function(i){ return i || “Tuesday” },“Monday”) 的结果是什么?

7、typeof(null) 结果是什么?void(0) 的结果?null instanceof Object 的结果?

8、假设数组 company 中存放多个人员的信息,每个人员信息由 名字 name 和年龄 age组成,如{name:“Marc”,age:18},用JS按从年龄小到大排序

9、执行下面的函数,会输出什么?
function Fx(){
this.a = 1;
this.b = 2;
}
Fx.prototype.getInfo = function(){
console.log(this.a);
}
const fx = new Fx();

const obj = {
a:3,
getInfo: fx.getInfo
}

fx.getInfo();
obj.getInfo();
10、有数组 var arr= [1,2,3],哪些方法可以判断是 Array 类型?

11、var a = b = c = d = 1; 那么 console.log(++a,–b,c++,d–) 分别是多少?

12、var n = "hello "; n.name = “world”; 那么 console.log(n + n.name) 会输出什么?

13、var min = Math.min(); var max = Math.max();那么 console.log(min < max) 结果是?

14、执行下面的函数,会输出什么?
var n = 1;
function Fn(){
console.log(n);
var n = 2;
console.log(this.n);
console.log(n);
this.n = 3;
}

var f1 = Fn();
var f2 = new Fn();
15、执行下面的代码,会输出什么?
var ary = Array(3);
ary[0] = 2;
var ret = ary.map(function(elem) {
return “1”;
});
console.log(ret);
16、匿名函数和箭头函数有什么不同?

二、问答

1、setTimeout 和 setInterval()

2、说说 JS 的原型链,有什么特点?

3、什么是柯理化?写一个

4、什么是 https? https 一定安全吗?如何解决?

5、描述 webpack 打包的优化原理。

6、Localstorage、cookies、sessionStorage 区别

三、ES6

1、[1,2,3].fill(4)的结果是?

2、for…of 和 for…in 区别?

3、下列数组中找出 age =19 的元素,用 ES6 的 api:
let company = [ {name:“a”,age:38}, {name:“b”,age:24}, {name:“c”,age:69}, {name:“d”,age:19} ]
4、 有数组:var arr = [1, 2, 3, 4, 4]; 有哪些方法可以去除重复项,用 ES6 的 api:

5、
function demo(i,…j){
console.log(this.i,i,j.join(","));
};
1)、demo(“a”,“b”,“c”,“d”) ; console.log输出什么?

2)、demo.call({i:1},“e”) ; console.log输出什么?

6、以下代码,怎么做到依次输出0到9?
var arr = [];
for (var i = 0; i < 10; i++) {
arr.push(function() { console.log(i) })
}
arr.forEach(function(fn) {
fn()
})

答案:
一、填空
1、
console.log("%c颜色字体",“color:red”);
可 F12 参考百度首页

2、“155”,10
运算符要求两个操作数都是数字,如果不是,会强制转换成数字,所以结果就变成了:15 - 5 = 10

3、2

4、x is not defined,1

5、1). false,true 2).false,false

6、“Monday”

7、“object”,undefined,false

8、company.sort((a,b)=>a.age-b.age); console.log(company);

9、1,3

10、五种方法:

1)、arr instanceof Array;

2)、arr.constructor === Array

3)、Array.prototype.isPrototypeOf(arr)

4)、Array.isArray(arr)

5)、{}.toString.call(arr)="[object Array]" //等同:Object.prototype.toString.call(arr)="[object Array]"

11、2 0 1 1

12、hello undefined

13、false //实际 min>max,因为:
Math.min: 如果没有参数,结果为Infinity
Math.max:如果没有参数,结果为-Infinity。

14、undefined,1,2
undefined,undefined,2
考察全局/局部变量、变量提升、this 指向等

15、[“1”, empty × 2]

16、相比较匿名函数,箭头函数:
1).函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
2).不可以当作构造函数,也就是说,不可以使用new命令,否则会报错
3).不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替

二、问答
1~5:待更新、、、
6、cookies是为了标识用户身份而存储在用户本地终端上的数据,始终在同源http请求中携带,即cookies在浏览器和服务器间来回传递,而sessionstorage和localstorage不会自动把数据发给服务器,仅在本地保存。

存储大小的限制不同。cookie保存的数据很小,不能超过4k,而sessionstorage和localstorage保存的数据大,可达到5M。

数据的有效期不同。cookie在设置的cookie过期时间之前一直有效,即使窗口或者浏览器关闭。sessionstorage仅在浏览器窗口关闭之前有效。localstorage始终有效,窗口和浏览器关闭也一直保存,用作长久数据保存。

作用域不同。cookie在所有的同源窗口都是共享;sessionstorage不在不同的浏览器共享,即使同一页面;localstorage在所有同源窗口都是共享

三、ES6

1、[4, 4, 4]

2、for in是ES5标准,遍历key;for of是ES6标准,遍历value。

3、for (let i of company){ i.age === 19 && console.log(i)

4、

1)、Set
const set = new Set([1, 2, 3, 4, 4]);
console.log([…set]);
2)、Map
var arr = [1, 2, 3, 4, 4];
function unique (arr) {
const map = new Map();
return arr.filter((a) => !map.has(a) && map.set(a, 1));
}
console.log(unique(arr));
5、这一题考察的比较全面: this 指向,变量,call,类型转换,ES6 的扩展运算符号

结果:1). undefined “a” “b,c,d” 2). 1 “e” “”

6、

1). 闭包
var arr = [];
for (var i = 0; i < 10; i++) {
arr.push((function(val){
return function(){
console.log(val);
}
})(i))
}
arr.forEach(function(fn) {
fn()
})
2). ES6 let