笔试总结(一)

1、css

css module与scoped的区别

css module是一个css文件,由JS编译,使其模块化,需要用import导入。

实现原理:在样式名添加hash值,使其编译后在全局唯一

scoped是使用在vue的style标签中的,只在当前组件生效,不影响其他组件的样式。

实现原理:在DOM和样式后添加唯一的标识值

RGBA

代表red green blue alpha(透明度)

JS

产生[0,7]的随机数:Math.floor(Math.random()*8),Math.random产生的是[0,1)之间的随机数,所以乘以8后向下取整就可以得到了

onblur事件:失去焦点触发

输出代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1
var b
(function a(){
let d='2'

b=function(){
console.log(d)
let d=3
}
})()
b()

2
var b
(function a(){
let d='2'
b()
b=function(){
console.log(d)
let d=3
}
})()

都为报错,因为函数b中的let在声明前使用,存在暂时性死区,不能使用函数a中的d,d存在于块级作用域中。

1
2
3
4
5
6
7
8
var a=1
function b(){
console.log(a)//1
}
function c(){
var a=3
b()
}

函数b中输出变量a,函数b没有在函数内查找到变量a,根据作用域链向外查找,因为作用域链是由执行上下文决定的,也就是词法的位置,所以输出1。

1
2
3
4
5
6
7
8
9
10
11
let a=10
let obj={
b:5,
say:function(){
console.log(this.b)
}
}
let func=obj.say
let func1=obj.say.bind(obj)
func()//undefined 构造函数的方法不能访问到外面的变量,闭包(函数)可以
func1()//5 bind方法将obj作为say的作用域
1
2
3
4
5
6
7
8
9
10
11
12
13
var a=0;  //<-
(function(){
var a={a:0} //声明对象a的a属性
var b=function(){
setTimeout(()=>{
console.log(this.a)
})
}
b() //0 此时输出的是变量a
b.call(a) //1 对象a的变量a
a.a=1 //<-
a={a:2}
})()
1
2
3
4
5
6
7
8
9
alert(a)  //function a....  函数变量提升
a() //10
var a=3 //这样不存在变量提升,变量提升是先a=3,再声明var a
function a(){
alert(10)
}
alert(a) //3
a=6 //a赋值为一个数值
a() // a is not a function
查看评论