错题集
CSS
1、设置元素浮动后,该元素的 display 值是什么(A )
A、block
B、不变
C、inline
D、inline-block
解析:当元素设置浮动之后,会完全脱离文档流。块元素脱离文档流之后,高度和宽度都被内容撑开;内联元素脱离文档流后,会变成块元素
JavaScript
数组
1、
1 | let arraynew = new Array(5) |
解析:使用 Array() 构造器创建数组,当传一个范围在 0 到 2^32-1 之间的整数时,将返回一个 length 的值等于传入的整数的空数组(是空数组,不是值为undefined的数组,但是获取索引对应的值时,将返回undefined),如果传入的值是其他类型的,则会返回一个新数组,传入的值会依次放入新数组
new Array(‘5’,4,[1,2]) => [‘5’,4,[1,2]]
new Array([1,2]) => [[1,2]]
函数
1、
1 | var x = 10 |
解析:自执行函数没有实参,所以第一次打印 x 为 undefined;逻辑与优先级高于逻辑或,x || 20 && 30 || 40 => 20 && 30 返回 30,x || 30 返回 30,30 || 40 返回 30,所以第二次打印结果为 30;外层 x 没有修改,所以为 10
2、
1 | let x = [1, 2], y = [3, 4] |
解析:函数内形参 x 的值在 x = x.slice(0) 这一步就与全局的 x 的值脱离了关系(即引用地址不同)
3、
1 | let a = 0, b = 0; |
A(1) 执行时,形成一个新的私有作用域,这个私有作用域的代码从上到下执行,走到 A 赋值这里,私有作用域里的函数堆被赋值给全局的 A,导致函数 A(1) 执行完毕后不会被销毁,A(1) 的形参 a 得以保存
4、编写一个ADD函数满足如下需求
add(1); //1
add(1)(2); //3
add(1)(2)(3); //6
add(1)(2, 3); //6
add(1, 2)(3); //6
add(1, 2, 3); //6
1 | function add(...outer){ |
5、下面代码输出结果是什么?
1 | let obj = { |
输出结果:
1 | {2: 1, 3: 2, length: 4, push: Array.prototype.push} |
解析:push 方法将值追加到数组中。push 方法具有通用性,可应用在类似数组的对象上。该方法根据 length 属性来决定从哪里开始插入给定的值。如果 length 不能被转成一个数值或者不存在时,则插入的元素索引为 0。如果 length 不存在,将会创建它
6、
1 | function Foo() { |
解析
new Foo.getName() -> new (Foo.getName())
new Foo().getName() -> (new Foo()).getName()
new new Foo().getName() -> new ((new Foo()).getName())