JS数据类型

数据类型

JavaScript中两大类数据类型

  • 基本数据类型
类型名 typeof检测结果 值举例
基本类型值 数字类型 数字类型number 数字类型number5
字符串类型 string 'ABC博客'
布尔类型 boolean true
undefined类型 undefined undefined
null类型 object null
- 复杂数据类型  

typeof运算符

  • 使用typeof运算符可以检测值或者变量的类型
    typeof 5; // number
    typeof 'ABC博客'; // string
<body>
    <script>
        var a = 5;                  //number
        var b = 'ABC博客';         // string
        var c = ' ';                // string 内容是空格

        console.log(a);             //输出a的值:5
        console.log(typeof a);      //输出a的类型: string
    </script>
</body>

 

number数字类型

  • 在JavaScript中所有数字部分大小、不分整数或浮点数、不分正负,都是数字类型
    typeof 2021; //number
    typeof 2.21; //number
    typeof -2021; //number
    typeof .5; //number
    上面的 .5 代表 0.5 ,小数中的 0 可以省略不写

科学计数法

  • 较大数或较小数(绝对值较小)可以写成科学计数法
    3e5; //300000
    typeof 3e5; //number
    3e-4; //0.0003
    typeof 3e-4; //number

特殊的数字型值NaN

  • NaN是英语 " not a number " 的意思,即 “不是一个数”,但它是一个数字类型的值
    typeof NaN; //number
  • 0除以0的结果是NaN,事实上,在数学运算中,若结果不能得到数字,其结果往往都是NaN
     

string字符串类型

  • 字符串就是“人类的自然语言”
  • 字符串要用引号包裹,双引号/单引号都可以
    typeof "好好学习"; //string
    typeof '好好学习'; //string

分清数字和字符串

  • 数字11和字符串'11'在语义上不同,前者表达一个数量,后者是一个文本
    typeof 11; //number
    typeof '11'; //string

字符串的拼接

  • 加号用来拼接多个字符串
    '好好' + '学习' //'好好学习'

字符串和变量的拼接

  • 要将一个变量的值“插入”到字符串中,要“斩断链接”
    var year = 2022;
    var str = '北京冬奥会在' + year + '年召开'

空字符串

  • 一些时候需要用使用空字符串,直接书写闭合的引号对即可
    var str = '';

字符串的length属性

  • 字符串的length属性表示字符串的长度
    '我爱祖国'.length //4
    ’我爱祖国,我爱祖国'.length //9
    ''.length //0

字符串的常用方法

  • “方法”就是能够打点调用的函数,字符串有丰富的方法

    方法 功能
    charAt() 得到指定位置字符
    substring() 提取子串
    substr() 提取子串
    slice() 提取子串
    toUpperCase() 将字符串变为大写
    toLowerCase() 将字符串变为小写
    indexOf() 检索字符串

charAt()方法

  • charAt()方法可以得到指定位置的字符

'我喜欢JS,我也喜欢HTML' .charAt(0) // ' 我 '
'我喜欢JS,我也喜欢HTML' .charAt(11) // ' T '
'我喜欢JS,我也喜欢HTML' .charAt(74) // ' '
74已经超出长度,所以结果是空字符串
char字符的意思,at,charAt()在第几个位置的字符

substring()、substr()和slice()

  • substring(a,b)方法得到从a开始到b结束(不包括b处)的子串
    ​ '我喜欢JS,我也喜欢HTML' .substring(3,5) // ' JS '
    ​ '我喜欢JS,我也喜欢HTML' .substring(10,14) // ' HTML '

  • substring(a,b)方法如果省略第二个参 数,返回的子串会一直到字符串的结尾
    '我喜欢JS,我也喜欢HTML' .substring(6) // ' 我也喜欢HTML '

  • substring(a,b)中,a可以大于b,数字顺序将自动调整为小数在前
    '我喜欢JS,我也喜欢HTML' .substring(3,5) // ' JS '
    '我喜欢JS,我也喜欢HTML' .substring(5,3) // ' JS '
     

  • substr(a,b)中,将得到从a开始的长度为b的子串
    '我喜欢JS,我也喜欢HTML' .substr(3,2 ) // ' JS '

  • substr(a,b)中,b可以省略,表示到字符串结尾
    '我喜欢JS,我也喜欢HTML' .substr(6) // ' 我也喜欢HTML '

  • substr(a,b)中,a可以是负数,表示倒数位置,从-1开始
    '我喜欢JS,我也喜欢HTML' .substr(-4,2) // ' HT '
     

  • slice(a,b)方法得到从a开始到b结束(不包括b处)的子串
    '我喜欢JS,我也喜欢HTML' .slice(3,5) // ' JS '

  • slice(a,b)的参数a可以是负数
    '我喜欢JS,我也喜欢HTML' .slice(-4,-1) // ' HTML '
    负数表示倒数,表示从 -4 位到 -1 位的子串,-1位也就是倒数第一个

  • slice(a,b)中,参数a必须小于参数b
    '我喜欢JS,我也喜欢HTML' .slice(6,2) // ' '

    对比总结

    • substring(a,b)和slice(a,b)功能基本一致,都是得到从a开始到b结束(不包括b)的子串,区别:

      1,substring()可以自动交换两个参数的位置,而slice()不行

      2,slice()的参数a可以是负数,而substring()不行

    • substr(a,b)中参数b是子串长度,而不是位置编号
       

toUpperCase()和toLowerCase()

  • toUpperCase()转为大写
  • toLowerCase()转为小写
    'i love you'.toUpperCase(); //"I LOVE YOU"
    'I LovE You'.toUpperCase(); //"I LOVE YOU"
    'i love you'.toLowerCase(); //"i love you"
    'I LovE You'.toLowerCase(); //"i love you"
     

indexOf()

  • indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置
  • 如果要检索的字符串值没有出现,则该返回-1
    'abcdeb'.indexOf('b') //1
    'abcdeb'.indexOf('de') //3
    'abcdeb'.indexOf('m') //-1
    返回的值类型是 number
     

布尔类型

  • 布尔型值只有两个: true 和 false,表示真和假
    typeof true; //boolean
    typeof false; //boolean

js中布尔值为false的六种情况

下面6种值转化为布尔值时为false,其他转化都为true

1、undefined(未定义,找不到值时出现)

2、null(代表空值)

3、false(布尔值的false,字符串"false"布尔值为true)

4、0(数字0,字符串"0"布尔值为true)

5、NaN(无法计算结果时出现,表示"非数值";但是typeof NaN==="number")

6、""(双引号)或''(单引号) (空字符串,中间有空格时也是true)

注意空数组空对象,负值转的布尔值时都为true

不同数据类型转化为布尔值的结果

数据类型 转为true的值 转为false的值
Boolean true false
String 任何非空字符串 ''(空字符串)
Number 任何非零数字值(包括无穷大) 0或者NaN
Object 任何对象 null
Undefined undefined

对于0, '', null, undefined, NaN,{}, [], Infinity求布尔值,分别是false false false false false true true true.

因此我们知道的一点是:对象的布尔值是true,即使是对象{}。

"!!"将表达式进行强制转化为bool值的运算,运算结果为true或者false。

 

undefined是什么

  • 一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined
  • 即:undefined又是值,又是一个类型,这种类型只有它自己一个值
    typeof undefined; //undefined
     

null类型是什么

  • null表示“空”,它是“空对象”
  • 当我们需要将对象销毁,数组销毁或者删除事件监听时,通常将它们设置为null
    box.onclick = null;
  • 注意:用typeof检测null结果是object
    typeof null; //object
posted @ 2021-07-01 13:57  干饭熊猫人  阅读(78)  评论(0)    收藏  举报