1.filter方法
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。如果没有符合条件的元素则返回空数组。
注意: filter() 不会改变原始数组。
var a = [0,1,2];
a[10]=10;
console.log(a); //(11) [0, 1, 2, empty × 7, 10]
console.log(a[4]===undefined); //true
var ss = a.filter(x=>{
return x===undefined;
})
console.log(ss); //[]
2.css中margin
<style>
*{
margin: 0;
padding: 0;
}
div{
width: 90px;
height: 90px;
background-color: #FAEBD7;
}
.box1{
margin-bottom: -10px;
}
.box2{
margin-top:30px ;
}
</style>
<div class="box1"></div>
<div class="box2"></div>
box1和box2之间的外边距为20px ;(30px-10px)
当水平方向或垂直方向的外边距(正值)发生合并时取大的为相邻外边距。
另外一个有趣的例子就是:假设有一个元素同时设置了margin-top和margin-bottom,但是内容为空,那么这两个margin值也会叠加,值为两者最大的一个,它类似与竖直方向上两个盒子margin值的叠加。
可参考链接:https://www.cnblogs.com/wangjian8888/p/6127519.html
3.position
<style>
*{
margin: 0;
padding: 0;
}
.box1{
width: 90px;
height: 90px;
background-color: #FAEBD7;
}
.box1{
position: sticky;
top: 10px;
margin-top: 20px;
}
position为static时box1与父元素的距离是20px;
position为absolute时box1与父元素的距离是30px;
position为relative时box1与父元素的距离是30px;
position为sticky时box1与父元素的距离是20px;
sticky
position属性设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果。
sticky属性有以下几个特点:
该元素并不脱离文档流,仍然保留元素原本在文档流中的位置。
当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。亦即如果你设置了top: 50px,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。
元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量.
4.parseInt();
console.log(+'1e'); //NaN
console.log(parseInt('1e')); //1
console.log(+'1e'==parseInt('1e')); //false
parseInt(string, radix)函数可解析一个字符串,并返回一个整数。
参数:
string 必需。要被解析的字符串。
radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。或者string大于radix时也是放回NaN。
如果parseInt的字符不是指定基数中的数字,则忽略该字符和所有后续字符,并返回解析到该点的整数值。parseInt将数字截断为整数值。允许使用前导空格和尾随空格。
如果第一个字符不能被转换成数字,parseInt返回NaN。
注意:
算术上, NaN 不是任何一个进制下的数。 你可以调用isNaN 来判断 parseInt 是否返回 NaN。NaN 参与的数学运算其结果总是 NaN。
5.URL和URI的区别:
URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL
URI = Uniform Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。
URL = Uniform Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor。
URN = Uniform Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。
6.ES6顶层对象:
let a = 1;
let obj = {
a: 2,
fun(){
console.log(this); //window
console.log(this.a); //undefined
}
}
let func = obj.fun;
func(); //undefined
console.log(self.a); //undefined
(function f(){
console.log(this) //window
console.log(this.b) //undefined
console.log(b) //b is not defined 报错
})()
顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。
ES6 为了改变这一点,一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
上题中全局变量a由let命令声明,所以它不是顶层对象的属性,返回undefined。