今天骚凯问了一道变量名冲突的题目,感觉很有意思,顺便也复习一下预解析的一些知识,有不对的地方忘前辈大神指正,题目是这样的: var a=100; function a(){ console.log(a); } a(); 这个串代码执行完会报错 : a is not a function 问题来了,为什么会报这个错误呢? 这里涉及到函数和变量的预解析: 1)函数声明会置顶2)变量声明也会置顶3)函数声明比变量声明更置顶:(函数在变量上面)4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声…
js中常见的错误,例如Uncaught TypeError: x is not a function 其原因除了函数本身有错之外,还有一种很奇怪的情况:函数本身没有错,但是运行时就是不能正常运行.这种情况与javascript的特性有关:变量与函数声明前置的优先级. 总结: js有声明前置,函数和变量的声明都会前置,即会在整个js代码的最开始,不管声明部分在什么位置. js中函数的声明优先于同名变量的声明,不管先后顺序如何. 函数的声明会在整段js代码的最前面,不管function() 函数在j…
获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};//是空的循环体 console.log(arr); ["x", "y", "z"] 在js中遇到return;可以看到运行到return;函数到这就停止了,循环也停止了,只是return;后面的不执行了,在这之前打印的还在,也就是说函数和循环中的re…