- 真与假
与 c 和 c++ 非常相似, 但与 Java 不同, JS中被认为true或false范围很广。所有对象 (空字符串除外) 和非零数字都被视为 true。空字符串、零、null 和undefined 被视为 false。
undefined 是一个特殊值。未分配任何值时的所有变量都是undefined。清楚?:)同样, 不返回值的所有函数实际上返回undefined 。事实上, 它是一个关键字。因此, 下面的代码是有效的:
var a = undefined;
其实和下面是类似的
var a;
- 值强转
在 js 中, 当你尝试用值做一些不可能的事情时, js 会尽量让它们兼容并输出一些有意义的结果。
例如: ! 0 实际上是布尔类型的true, !一般只能和布尔型一起使用。 ' 2 ' * 1 实际上是数字 2, 因为 * 不能用在字符串上。但是, ' 2 ' + 1 是字符串 21, 因为由于存在一个字符串, 该数字被强制为字符串。
有个小建议。你可以这么使用 – var hasChildren = !!children.length; 这会将hasChildren设置合适的布尔数值。