杂七杂八

1.首先给一个例子

图片

​ 是不是很神奇,咋都是5呢,这大概是因为这个var吧,那我们换成let试试

图片

​ 哦吼,看样子是局部全局问题呀,解析的时候先解析全局的,那用var的话,var是全局的,已经解析到5了,你手速不可能跟上解析速度吧,那输出就都是5,而用let就完全不用操心了。

​ 下面的demo里用的都是let,但解决方法是var的 ,那我该怎么解决这个问题,定位到我指定元素呢,用this就ok,在事件函数中,this代表的是触发当前事件的元素。也就是说,在demo中,如果用let,就用nav[i];如果用var,就用this

demo)

2.有的时候我们想让一些块元素没有间隙地并排放着,但总是事与愿违,就像下面这样

图片

但是不慌,解决办法还是有的

首先是笨办法,就是把div写一串,还是不留缝隙那种

<div class="app"></div><div class="app"></div><div class="app"></div><div class="app"></div><div class="app"></div>

还有一个办法就是把父元素的font-size设成0,但是如果子元素对font-size有要求,因为他会继承父元素的0,所以要单独给子元素再设置font-size

采用任一方法,我们来看看效果

图片

吼吼吼,大功告成!(虽然这不是js的事)

3.开关问题:

1
2
3
4
5
6
if(){

}
else{

}

这种形式是不是非常常见,但是作为判断条件的有时可能并不能起作用,比方说src这个属性就不能放在括号里,不能作为条件,这个时候就可以用开关了,实际上就是我们自己定义的一个条件,通过这个条件来控制我们自己的条件

1
2
3
4
5
6
7
8
9
let isTrue=true;
if(true){
···
isTrue=false;
}
else{
···
isTrue=false;
}

4.classList的应用

  • item.classList.add(“class名字”)

    添加class

  • item.classList.remove(“class名字”)

    删除某一class

  • item.classList.contains(“class名字”)

    判断是否含有某class,有则返回true,没有则返回false

  • item.classList.toggle(“class名字”)

    切换,若有这个就删掉,没有这个就加上

5.自定义属性

给元素加一个标准中没有定义的属性就是自定义属性,如

item[i].index=i;

6.JSON是字符串,不是对象

7.任何数%n,结果为0~n-1,如n%5,结果为0,1,2,3,4

8.数据类型划分

按typeof划分:number,string,boolean,function,undefined,symbol,object

按ECMAscript划分:简单类型:number,string,boolean,null,undefined,symbol

​ 复杂类型:object

​ 常见对象类型:Array,object,Element,Elements,Function

因此console.log(typeof(null))的结果是object而不是null

9.NaN不等于任何值,也不等于自身

-------------本文结束感谢您的阅读-------------