1、document.readyState 有三个值loading interactive
//loading 仍在加载 interactive 文档已被解析 正在加载状态结束 但是样式表和框架之类的子资源仍在加载 complete 文档和所有子资源已完成加载。表示
load
状态的事件即将被触发2、DOMContentLoaded 文档被完全加载和解析完成之后
addEventListener('DOMContentLoaded ',dosomething,boolean) 第三个参数默认false(冒泡阶段执行)true(捕获阶段执行)
3、for...in 遍历循环对象属性时会把原型上的所有属性都遍历一遍,解决方法用hasOwnProperty过滤不想看到的
Object.prototype.bar=1; var foo={moo:2} for(var i in foo){ console.log(i) } for(var i in foo) { if (foo.hasOwnProperty(i)) { console.log(i); } }
4、双等的写法不好,双等书写方式会自动转类型容易出现不可控的错误,尽量改变坏习惯 ,使用严格的===
5、代码一定要加分号,当程序员不写分号,浏览器会自动补齐分号,可能出现位置错误
6、if有大括号执行{}里面的函数,无{}执行最近的一行代码
7、concat
用于连接两个或多个数组,不会改变现有数组,仅仅返回被链接数组的一个副本 arrayObject.concat(arrayX,arrayX,......,arrayX) 实例1: <script type="text/javascript"> var a = [1,2,3]; document.write(a.concat(4,5)); </script> 实例2: <script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" var arr2 = new Array(3) arr2[0] = "James" arr2[1] = "Adrew" arr2[2] = "Martin" document.write(arr.concat(arr2)) </script> 实例3: <script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" var arr2 = new Array(3) arr2[0] = "James" arr2[1] = "Adrew" arr2[2] = "Martin" var arr3 = new Array(2) arr3[0] = "William" arr3[1] = "Franklin" document.write(arr.concat(arr2,arr3)) </script>
8、argument
https://blog.csdn.net/zhouchangshun_666/article/details/90631889
9、eval 计算或去除引号,如果去除引号发现可以计算eval将返回计算结果,否则打印出去除引号的结果