第二天

2020-03-06  本文已影响0人  晚月川

JS中常用的输出方式 (3种)

number数据类型

isNaN 验证是否为非有效数字

想要验证一下n是不是有效数字:isNaN 验证一个值是否为非有效数字,如果是有效数字,则返回false,如果不是有效数字,则返回true

```
    console.log(isNaN(1));   //=>false
    console.log(isNaN(NaN));  //=>true
    console.log(isNaN(Infinity)); //=>false
    console.log(isNaN('AA'));  //=>true
    console.log(isNaN('12.5'));  //=>false
    console.log(isNaN('12.5px')); //=>true
    console.log(isNaN([])); //=>false
    console.log(isNaN([10])); //=>false
    console.log(isNaN([10, 20])); //=>true
    console.log(isNaN({})); //=>true
    console.log(isNaN(null)); //=>false
    console.log(isNaN(undefined)); //=>true
    console.log(isNaN(Symbol(1))); //=>报错
```

string 字符串

在JS中用 单引号/双引号/反引号 包起来的都是字符串

把其它数据类型转换为字符串类型

在JS中常用的数学运算

除了加法以外,其余的情况都是数学运算(如果遇到非数字类型,需要基于Number把其强制转换为数字类型,然后在进行运算的);加号在JS中既有数学运算,也有字符串拼接的意思(只要加号两边的任意一边出现字符串,则变为字符串拼接)

```
    console.log(3 - "3px"); //=>NaN
    console.log(3 + "3px"); //=>"33px"  字符串拼接
    console.log(1 + "1"); //=>"11" 字符串拼接
    console.log(1 + {}); //=>"1[object Object]"  在把{}转换为数字过程中,先把他转换为字符串"[object Object]",此时右侧出现了字符串,则不再是数学运算,而是字符串拼接了
    console.log(1 + []); //=>'1'
    console.log([10] + true); //=>"10true"  在转换[10]到数字的过程中,先把其转换为字符串"10",此时操作变为字符串拼接(和数学运算没关系了)
    console.log(true + [10]); //=>"true10"
    console.log(1 + true); //=>2
```
```
console.log(7 / 3); //=>除  2.3333333333333335
console.log(7 % 3); //=>取余  1
```
```
console.log(10 - null); //=>10
console.log(3 * undefined); //=>NaN
console.log(true - "12"); //=>1-12 =>-11
```
```
console.log(100 + true + 21.2 + null + undefined + "Tencent" + [] + null + 9 + false);
     100 + true => 101
     101 + 21.2 => 122.2
     122.2 + null => 122.2
     122.2 + undefined => NaN 
     NaN + "Tencent" => "NaNTencent"  字符串拼接(以后都是字符串拼接)
     "NaNTencent" + [] => "NaNTencent"
     "NaNTencent" + null => "NaNTencentnull"
     "NaNTencentnull" + 9 => "NaNTencentnull9"
     "NaNTencentnull9" + false => "NaNTencentnull9false"
```

传统的拼接方式,我们需要在字符串中基于 "++" 或者 '++' 的方式把变量拼接到字符串中(这种方式涉及很多恶心的规则,一不留神就容易拼错)

ES6中的模板字符串就是为了解决传统字符串拼接中的问题(反引号 TAB上面的撇):{}中存放变量或者其它的JS表达式即可,很简单的完成字符串拼接 ``` // 真实项目中经常把一些变量的值拼接到指定的字符串中 // 完成字符串拼接处理:2020年03月03日 12:00:00 let year = '2020'; let month = '03'; let day = '03'; let hours = '12'; let minutes = '00'; let seconds = '00'; let result = `{year}年{month}月{day}日 {hours}:{minutes}:${seconds}`;
console.log(result);
```

boolean 布尔

如何把其它数据类型转换为布尔类型?

规则:只有 “0/NaN/null/undefined/空字符串” 最后是false,其余的都是true

```
console.log(!!1); //=>true
console.log(!1); //=>false
console.log(!!-1); //=>true
console.log(!!0); //=>false
console.log(!!undefined); //=>false
console.log(!!Number('12px')); //=>Number('12px')=>NaN  false
console.log(!![]); //=>true
console.log(!!''); //=>false
console.log(!!{}); //=>true
/* 条件判断中,每一个条件最后一定是true/false */
```

```
if (1 == 1) {}
    if (1) {
        //=>写一个值,也是要把这个值转换为布尔,然后校验程序的真假
    }
    if (3 + '3px') {} //=>3 + '3px' =>'33px'  真
    if (3 - '3px') {} //=>3 - '3px' =>NaN   假
```

object 引用数据类型

关于对象中键值对的增删改查

对象属性名

如果非要让属性名是个对象,只能基于ES6中的新数据结构 Map 处理

数组是特殊的对象:

它的属性名是数字,数字从零开始,逐级递增,每一个数字代表着当前项的位置 =>我们把这种数字属性名叫做“索引” ; 默认有一个length属性存储数组的长度

```
let arr = [10, 20, 30];
    console.log(arr[0], arr[1], arr[2]);
    console.log(arr.length);
    console.log(arr['length']);
```
上一篇 下一篇

猜你喜欢

热点阅读