JavaScript是弱类型语言,这意味着你无需声明是哪种数据类型存储在变量中。 JavaScript会根据指定的信息(例如,''或""来表示字符串)自动赋予其类型。 许多其他语言(如Java)必须声明变量的类型,例如int,float,boolean或String。
这是把双刃剑
Photo by Alex
虽然JavaScript的类型系统有很大的灵活性,但当你尝试将int添加给对象时,由于缺乏强类型系统的限制,可能要花费时间来调试类型错误。
下面有一些有用的tips可以帮助你理解JavaScript的类型机制。
1typeof
无论何时对变量的类型有疑问,都可以使用typeof运算符:
重点:对类型有疑问时,使用typeof。
2== vs ===
使用===时,值和类型都必须相同才能相等。
注意,可以使用!==用于检查强制类型的不等式:
重点:始终使用===进行判断,来避免出错。
3true&false判断
使用 ! 来判断true or false,比如以下情况:
null,undefined,0,""和false全部在我们使用!时返回true。当我们应用! 对于存在的东西,比如数字42或字符串“hello world”,我们会得到错误的结果。
这表明null,undefined,0,""和false都表示不存在或错误值,但不是以相同的方式。 0是一个数字,表示数量不存在。 ""是一个字符串,表示字符串中值不存在。false是一个布尔值,并且表示缺少true。 这可以用一个简单的类型来验证:
undefined和null更加棘手。 如下例所示,它们是不同的类型,具有相同的值,但是===比较会失败:
因为null是一个对象,所以我们可以给它添加一个数字。 然而,对于未定义的数字,添加一个数字会提示NaN。
将数字添加到null似乎看起来可行,但建议不要这样做!
虽然null是一个对象,但是当你向它添加一个数字时会得到一个数字。 然而,当你添加其他东西时,它会给你无厘头的字符串:
重点:
1. 当你检查真实性时你需要小心。使用===检查所有类型的潜在的false值,例如,如果(foo === undefined foo === null)... - 这会变得非常单调乏味。
2. 不要将东西添加到null。
3. 不要总是使用!运算符在检查所有的判断,原因你懂得->null,undefined,0,""和false。
--END --
如果觉得文章对你有帮助,点赞、转发一下,谢谢各位支持。
Copyright 2018 kovlento
领取专属 10元无门槛券
私享最新 技术干货