日记day1

来源:互联网 发布:淘宝金牌卖家入口 编辑:程序博客网 时间:2024/05/20 18:20

1:可以在同一个页面中引入多个.js文件,也可以在页面中多次编写<script>js代码<script>,浏览器按照顺序依次执行。

2:script标签中的type属性默认是javascript,所以不必显示的指定type

3:由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。

4:NaN这个特殊的Number与所有其他值都不相等,包括它自己。唯一能判断NaN的方法是通过isNaN()函数。

5:JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用。

6.如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量。在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。启用strict模式的方法是在JavaScript代码的第一行写上:'use strict';不用var申明的变量会被视为全局变量,为了避免这一缺陷,所有的JavaScript代码都应该使用strict模式。

7.需要特别注意的是,字符串可以重新赋值,但是对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果。

8.JavaScript把null、undefined、0、NaN和空字符串''视为false,其他值一概视为true,因此上述代码条件判断的结果是true。

9.由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引。请注意,for ... in对Array的循环得到的是String而不是Number

10.遍历Array可以采用下标循环,但Map和Set并不行。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。iterable有一个特征是可以通过for……of来遍历数组,它与for……in的区别是:对于数组新添加成员,of并不会从原数组修改,但in会,然后长度却是原数组的长度。

11.注意,由于JavaScript引擎在行末自动添加分号的机制(是有规则的添加分号),所以return一般不能单独一行,以免这种机制导致程序功能无法正常实现。

12.ES6标准引入了新的关键字const来定义常量,const与let都具有块级作用域。

13.JavaScript引擎自动提升了变量的声明,但不会提升变量的赋值。

14.名字空间,全局变量会绑定到window上,不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现。减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局变量中。

15.Array的sort()方法默认把所有元素先转换为String再排序

16.返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。













原创粉丝点击