JavaScript数据类型详解

数据类型:

  • 基本数据类型(值类型)

    • 1.Number:用于任何类型的数字:整数或浮点数

    • 2.String:用于字符串:一个字符串可以包含一个或多个字符串

    • 3.Boolean:用于true和false

    • 4.null:用于未知的值

    • undefined:未定义

    • 6.Symbol:唯一的标识符

    • 7.BigInt:用于任意长度的整数

  • 引用类型

    • 普通对象

    • 数组对象

    • 正则对象

    • Date对象

    • Object:用于更复杂的数据结构

"JavaScript中有八种基本的数据类型(前七种为基本的数据类型也称原始类型)而Object为复杂数据类型"

type操作符

console.log(typeof aaa);//undefined,这个变量没有定义但是不会报错,aaa此时是变量console.log(typeof 1.1);//number数字型console.log(typeof '1');//string 字符型console.log(typeof true);// 布尔类型 booleanconsole.log(typeof {});//object 是一个对象console.log(typeof function(){});// function 是一个方法,也是属于object类型的js里万物皆对象console.log(typeof null);//object(1) null 是一个空指针console.log(typeof Symbol("id"));//symbol

typeof null 的结果是object这其实是不对的,官方也承认了这是运算符的问题,现在只是为了兼容性留了下来。是javascript语言的一个错误

**Number

JavaScript 中的变量可以保存任何数据。变量在前一刻可以是个字符串,下一刻就可以变成 number类型:

//没有错误let message = 'hello';message = 1234;

允许这种操作的编程语言称为动态类型的编程语言。

JavaScript中有八种基本的数据类型。

Number类型

let n = 123;n = 12.45;

number类型代表整数和浮点数。
八进制 0~7 程序里面数字前面加0 表示八进制

let num = 011;console.log(num); //转为十进制就是9

十六进制 0-9 a-f 数字前面加0x表示十六进制

let num1 = 0x9;console.log(num);

数字型最大值:

console.log(Number.MAX_VALUE);//1.7976931348623157e+308

数字型最小值:

console.log(Number.MIN_VALUE);//5e-324

数字可以有很多操作,比如。+ - * / % 等等。

除了常规数字,还有特殊数值 也属于这种类型 :Infinity-Infinity 和 NaN

  • Infinity无穷大 ∞。 大于任何值

我们可以通过除以 0来得到它:

alert(1 / 0); //Infinity

isNaN()这个方法用来判断非数字 并且返回一个值,如果是数字返回的是false,如果不是数字返回的是true

console.log(isNaN(25));//falseconsole.log(isNaN("呵呵"));//true
  • isNaN

    • 检测当前值是否是有效数字,返回true代表不是有效数字,返回false是有效数字

    • isNaN(12)===false

    • isNaN('1')===false

    • isNaN(true)===false

    • isNaN(false)===false

    • isNaN(null)===false

    • isNaN(undefined)===true

    • isNaN({name:9})===true

    • isNaN([11,12])===true

    • isNaN([12])===false

isNaN检测的机制

  • 首先验证当前要检测的值是否为number类型的,如果不是,浏览器会默认的把值转换为数字类型

    • 把非数字类型转换为数字

    • 其它基本类型转换为数字,直接使用Number这个方法转换的,如果当前字符串中出现任意一个非有效数字结果则为NaN

  • 当检测的值已经是数字类型,是有效数字返回false,不是返回true

NAN的比较

NaN == NaN:false NaN和谁都不相等

检测是否为有效数字

if(isNaN(num)){
    // 检测是否为有效数字}

BigInt 类型

在JavaScript中 " number"类型无法代表大于 253 (或者小于-253)的整数。

通过n附加到整数字段的末尾来创建BigInt

const bigInt = 12312312312231264645454513n;

兼容性问题

目前 Firebox和 Chrome 已经支持 BigInt了,但 Safari/IE/Edge 还没有。

String类型

JavaScript中的字符必须被括在引号里。

let str = '我画';let str1 = "你猜"let phease = `can embed ${str}`;

转义符\开头 常用的转义符:

  • \n 换行

  • \ 斜杠\

  • \' 单引号

  • \" 双引号

  • \t tab缩进

  • \b 空格

案例:

  alert('越努力\n"越幸运"');

字符串长度通过字符length属性可以获取整个字符串长度

let str = 'This is a cat';console.log(str.length);//13

字符串拼接
多个字符串之间可以使用 + 进行拼接 可以加任何类型的。

  let name= 'huawei';
  console.log(name+'真棒!')//huawei真棒!
  console.log('12'+24);//1224
  console.log(12+24);//36

新增属性:反引号是 功能扩展引号。他们允许我们通过变量和表达式包装在${...}中,来将它们嵌入到字符串中。例如:

let name = "json";//嵌入一个变量alert(`helo,${name}!`);//helo,json!

${...}内的表达式 会被计算,计算结果会成为字符串的一部分。可以再${...}内放置任何东西:名为name的变量,或者1 +1的算数表达式。

需要注意的是,这仅仅在反引号内有效,其它引号不允许这种嵌入。

alert("the result is ${ 1 + 1 }");//使用双引号不会计算 ${...}

Boolean类型(逻辑类型)

boolean 类型仅包含两个值:true 和 false

通常用于存储 yes或 no的值:true|yesfalse | no

let num = 5 > 6;console.log(num); // false

null 值

特殊的 null值不属于上述任何一种类型。

它构成一个独立的类型,只包含 null 值

let age = null;

null 仅仅代表一个无、空或值未知的特殊值

undefined

特殊值 undefined 和 null一样自成类型。

undefined的含义是未被赋值。

如果一个变量已被声明,那么它的值就是 undefined:

let x;alert(x);// 弹出undefined

object 类型 和 symbol 类型

object 类型是一个特殊类型。

其它所有的数据类型都被称为原生类型,因为他们的值只包含一个单独的内容(字符串、数字或者其它)。

symbol类型用于创建对象的唯一标识符。

typeof运算符

typeof 运算符返回参数的类型。当我们想要分别处理不同类型值得时候,或者想快速进行数据类型检验时,非常有用。

它支持两种语法形式:

1.作为运算符:typeof x

2.函数形式:typeof(x)

对 typeof x 的调用会以字符串的形式返回数据类型:

typeof undefined // "undefined"typeof true // "boolean"typeof alert //"function"typeof "foo" //"string"typeof Symbol("id") // "symbol"typeof 0 // "number"typeof null //"object"

总结

JavaScript 中有八种基本的数据类型 (前七种为基本数据类型,也称原始类型,而object为复杂数据类型)。

  • number 用于任何类型的数字:整数或浮点数,在 ±253范围内的整数。

  • bigint 用于任意长度的整数。

  • string 用于字符串:一个字符串可以包含一个或多个字符。

  • Boolean用于 true和 false

  • null 用于未知的值。

  • undefined 用于未定义的值。

  • symbol唯一的表示符。

  • object 更复杂的数据类型。

(完)