1.变量类型模糊,容易出现问题;
2.全局变量与函数内部变量同名时,在函数内部声明变量,声明位置虽然在后,但在这之前,此名变量已为‘undefined’;
其实这个的准确说法应该叫法,作用域声明提前,也就是说在作用域内所有的声明都会在编译前放到作用域的最前面,赋值位置不变。
4.变量传递,对象为引用传递,数字和字符串是值传递;即函数内不能改变变量地址
5.对象赋值是引用复制。其实和上面的意思差不多。
6.不要把原始类型当作对象,虽然它很像
7.不用声明就可以变量赋值,一不注意就生成一个全局变量
8.||和&&的优先级,&&比||优先,都比’=‘优先,不要以为顺序执行a=4,其实这个不是js的坑,大部分语言都这样
一定要记住增值=表达式,优先级在最后。还有个更后的是逗号表达式。
9.日期类型在转换时优先转换为字符串型。
10.变量类型的隐式转换,js期望表达式为字符串或数字会进行隐式转换,转换方法如下表,摘自js权威指南第6版一定要注意!"0"是false,!0是true
11.全局var和function的属性不能被delete;delete是用来删除对象属性的,但只是断开属性与对象之间的联系,并不会更改属性中的属性
12.注意in和hasOwnProperty()的区别
13.function函数定义
这样就都输出1了
领取专属 10元无门槛券
私享最新 技术干货