原生js的一些盲点

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将返回计算结果,否则打印出去除引号的结果
原文地址:https://www.cnblogs.com/iwen1992/p/12888030.html