js的坑,你遇到过几个

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了

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305G0N0EM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券