本文已参与「新人创作礼」活动,一起开启掘金创作之路。
布尔 boolean
布尔值只有 两个值
true和false
- 只有 0,NaN,' ',null,undefined,false 六个值会转换成False,其余的都转换成 True,
没有任何特殊情况
*转换成布尔类型
其他类型转换哼布尔类型有三种方式:
1,Boolean
console.log(Boolean(10)); // true
console.log(Boolean('10')); // true
console.log(Boolean(true)); // true
console.log(Boolean(false)); // false
console.log(Boolean(null)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean('')); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(0)); // false
2,!/!!
// !单感叹号,先把后面的(值/表达式值返回值)转换成 Boolean 值,再对其取反
console.log(!2 + ''); // 'false'
console.log(!''); // true
console.log(![]); // false
console.log(!null); // true
console.log(!NaN); // true
// !!双感叹号的功能等同于 boolean,可以理解成语法糖的写法
console.log(!![]); // true
console.log(!!{}); // true
console.log(!!''); // false
console.log(!!null); // false
console.log(!!undefined); // false
console.log(!!NaN); // false
console.log(!!0); // false
console.log(!!false); // false
3,条件判断
// if 条件后面的 () 会对里面最终产出的值进行 Boolean 的转换,为true就执行语句
if (10 + '10px') {} // ('1010px') ==> true
if (10 - '10px') {} // (NaN) ==> false
if (!(10 - '10px')) {} // (!(NaN)) ==> (true) ==> true
if (NaN) {} // (NaN) ==> false
if (!NaN) {} // (!(NaN)) ==> (true) ==> true
空对象指针 null
代表没有,无,意料之中的没有 ==> (开始不知道值,手动设置 null,后期再进行赋值操作,表示"没有对象")
let a = null;
// 我们开始不知道给null赋什么值,所以先给它一个空值,等想赋值的时候再给他
let a = 0;
// 有些代码可能会按照这种方式给不确定的值进行赋值,但记住,0是在栈内存中有自己的储存空间的,而null是完完全全的不暂居空间,一般赋空值用null
- null 的主要用途就是 在赋值不确定的情况下,用一个null代替赋值,后面用在时候再重新赋值
- 初始赋值用null,不占据占内存空间,虽然只有一点点点
- 凡是指向 null 的变量都是不知想任何地址的,null 是一个空对象指针
未定义undefined
也代表没有,无,意料之外的没有 ==> (表示"缺少值",就是此处应该有一个值,但是还没有定义)
let a; // 1. 创建一个变量没有赋值,默认值为undefined
function fn() {}; fn() // 2. 函数默认 return 返回值为 undefined
function fn(x) {consoloe.log(x)}; fn() // 2. 调用函数时没有传递实参给形参,形参为undefined
let obj = {}; obj.name // 3. 访问不存在的属性名,返回为undefined
let arr = [, 20, , 'a']; // 4. 数组中没有给对应的索引号传值,0和1的位置为 undefined