JavaScript的八种数据类型

目录
  • 一、前言
  • 二、动态数据类型
    • 2.1 字符串string
    • 2.2 数值number
    • 2.3 布尔boolean
    • 2.4 null和undefined
    • 2.5 symbol
    • 2.6 对象object
  • 三、基本数据类型与引用数据类型区别
    • 3.1 声明变量时不同的内存分配
    • 3.2 正是因为内存分配不同,在复制变量时结果也不一样
    • 3.3 参数传递不同

一、前言

在ES5的时候,我们认知的数据类型确实是 6种:NumberStringBooleanundefinedobjectNull

ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。
所以:准确来说目前JS数据类型总共有8种!

  • Number
  • String
  • Boolean
  • Null
  • Undefined
  • Object
  • Symbol
  • BigInt

按照类型来分有基本数据类型和引用数据类型:

基本数据类型:StringNumberBooleanNullUndefinedSymbol

引用数据类型:Object【Object是个大类,function函数、array数组、date日期...等都归属于Object】

二、动态数据类型

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型

JavaScript中变量似乎很简单,因为它声明变量只需要一个“var”就可以,不像其他编程语言严格区分了数据类型(int/double/char/boolean...)。这样做也是有好处的,变量可以被赋予任何类型的值,同样也可以给这个变量重新赋予不同类型的值。并不是“一定终身”

var x = 1;        //number类型
var x = 0.1;     //number类型,JS不区分整数值和浮点数值

//现在x由number变成string
var x = "hello world"; //由双引号内文本构成字符串
var x = 'javascript';   //单引号内文本同样可以构成字符串

//现在x由string变成boolean
var x = true;    //true和false作为布尔值

var x = null; 
var x = undefined;  //null和undefined很相似,是特殊的类型

2.1 字符串string

字符串是存储字符(比如 "Bill Gates")的变量

字符串可以是引号中的任意文本。可以使用单引号或双引号

  • 使用单引号或者双引号,没有区别
  • 单引号不要嵌套单引号。双引号同理,非要嵌套需要对引号进行转义 \' \"
var str = '孙悟空'; //单引号字符串
var str2 = '猪八戒'; //双引号字符串

其他转义字符:

  • \n 表示换行符
  • \r 表示回车符
  • \t 水平制表符 tab
  • \' 单引号
  • \" 双引号
  • \\ 反斜杠
  • \uXXXX 四位十六进制表示unicode字符串
  • \xXX 两位十六进制表示拉丁字符

字符串拼接:

var str1 = "hello";
var str2 = "world";
var str = str1 + str2
console.log(str); //helloworld

2.2 数值number

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带

var num1=5.02;     //使用小数点来写
var num2=520;      //不使用小数点来写

//极大或极小的数字可以通过科学(指数)计数法来书写
var y=123e5;      // 12300000
var z=123e-5;     // 0.00123

数值范围:

  • 5e324 ~ 1.7976931348623157e+308
  • 如果超过范围,会表示为 Infinity 或者 -Infinity

特殊的数值NaN:

  • NaN是number类型,是一个数值
  • 特点1:NaN与任何数进行任何运算结果都是NaN
  • 特点2:NaN与任何数都不相等,包括自己

相关函数:

  • isNaN() 判断数据是否是NaN, 是返回true,否则返回false
  • isFinite() 判断数据是否在范围内,在范围内返回true,否则false
//NaN是一个特殊的number,与其他所有值都不相等,包括它自身
console.log(NaN === NaN ); //false

//唯一识别NaN的方法
console.log(isNaN(NaN) );  //true

// 范围:5e324 ~ 1.7976931348623157e+308
var min = 5e324;
var max = 1.7976931348623157e+308;
var a = 1.7976931348623157e+309; 

console.log(min); //Infinity
console.log(max); //1.7976931348623157e+308
console.log(a);   //Infinity
console.log(isFinite(a)); //false(超出范围,不在数值范围内)

2.3 布尔boolean

布尔(逻辑)只能有两个值:true false

var x=true;
var y=false;

2.4 null和undefined

null 表示没有对象,此处无值

undefined 表示缺少值,本来应该有值但没定义

var x = null;
var y = undefined

2.5 symbol

Symbol 函数可以接受一个字符串作为参数,为新创建的 Symbol 提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分

let name = Symbol();
let name2 = Symbol("bb");
console.log(name);  // Symbol()
console.log(typeof name);  // "symbol"
console.log(name,name2); //Symbol() Symbol(bb)
console.log( name === name2); // false

2.6 对象object

对象由花括号分隔。在括号内部,对象的属性以键值对的形式 (name : value) 来定义。属性由逗号分隔

//空格和折行无关紧要。声明可横跨多行
var obj = {
    "name":"张三",
    "age":18
}

(这里键名也可以不用加引号)

读取对象中属性:

name = obj.name
//或
name = obj['name']

三、基本数据类型与引用数据类型区别

3.1 声明变量时不同的内存分配

基本数据类型由于占据的空间大小固定且较小,会被存储在栈当中,也就是变量访问的位置
引用数据类型存储在堆当中,变量访问的其实是一个指针,它指向存储对象的内存地址

3.2 正是因为内存分配不同,在复制变量时结果也不一样

基本数据类型复制后2个变量是独立的,因为是把值拷贝了一份
引用数据类型则是复制了一个指针,2个变量指向的值是该指针所指向的内容,一旦一方修改,另一方也会受到影响

<script type="text/javascript">
    var x = 3;
    var y = x;
    console.log(x,y); //3 3
    // 基本数据类型复制后2个变量是独立的
    x = 5; //修改一方,另一个不受影响
    console.log(x,y); //5 3 
    
    
    var a = [0,1,2,3];
    var b = a;
    console.log(a, b); //(4) [0, 1, 2, 3] (4) [0, 1, 2, 3]
    a[0] = 9
    console.log(a, b); //(4) [9, 1, 2, 3] (4) [9, 1, 2, 3]
</script>

结果:

这里明显可以看出b复制了a,改变a数组的值,b数组也跟着改变了。这就是因为当引用数据类型复制的是同一个指针而不是同一个值,指针指向的地址都是相同的,一方修改另一方也会受影响!

(这里涉及了JS的深拷贝和浅拷贝,这里就不再详细赘述,后面会有单独文章进行讲解)

3.3 参数传递不同

基本数据类型把变量里的值传递给参数,之后参数和这个变量互不影响
引用数据类型(这里拿函数举例):虽然函数的参数都是按值传递的,但是引用值传递的值是一个内存地址,实参和形参指向的是同一个对象,所以函数内部对这个参数的修改会体现在外部
数据类型的转换以及检测数据类型的方法会在其他文章单独讲解,为了方便阅读这里就不再详细赘述~

到此这篇关于JavaScript的八种数据类型的文章就介绍到这了,更多相关JavaScript数据类型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

参考链接:

https://www.html.cn/qa/javascript/11619.html

https://www.cnblogs.com/nangezi/p/9049025.html

https://blog.csdn.net/u013592575/article/details/95087953

(0)

相关推荐

  • JavaScript的八种数据类型

    目录 一.前言 二.动态数据类型 2.1 字符串string 2.2 数值number 2.3 布尔boolean 2.4 null和undefined 2.5 symbol 2.6 对象object 三.基本数据类型与引用数据类型区别 3.1 声明变量时不同的内存分配 3.2 正是因为内存分配不同,在复制变量时结果也不一样 3.3 参数传递不同 一.前言 在ES5的时候,我们认知的数据类型确实是 6种:Number.String.Boolean.undefined.object.Null ES

  • javascript七大数据类型详解

    目录 前言: 详细介绍: 练习: 总结 前言: 各大语言都会有基本类型如python,java,c系列等,基本类型的存在是不可或缺的,它就好似我们生活中算数中的整数,汉字中的中文,它就是来表示这些的,想想还是蛮重要的,那么js有常见的五大基本数据类型有:String,Number,Boolean,Undefined,Null,还有两个常见复杂类型Object,Symbol. 详细介绍: 序号 类型 昵称 范围 常见方法 介绍 1 String 字符串 .toString() 将对象转换为Stri

  • JS中的四种数据类型判断方法

    目录 1.typeof 2.instanceof 3.constructor 4.toString() 本文总结了四种判断方法: 1.typeof typeof是一个运算符,其有两种使用方式:(1)typeof(表达式); (2)typeof 变量名;返回值是一个字符串,用来说明变量的数据类型;所以可以用此来判断number, string, object, boolean, function, undefined, symbol 这七种类型,每种情况返回的内容如下表所示: // 字符串 con

  • javascript基础之数据类型详解

    目录 1.数据类型 1.1 为什么需要数据类型 1.2 变量的数据类型 1.3 数据类型分类 2. 简单数据类型(基本数据类型) 2.1 数字型Number 1. 数字型进制 2.数字型范围 2.2 字符串型 String 1.字符串转义符 2.字符串长度 2.3 布尔型 Boolean 3.数据类型转换 3.1转换为字符串 3.2 转换为数字型 隐式转换 3.3 转换为布尔型 总结 1.数据类型 1.1 为什么需要数据类型 在计算机,不同的数据所占的存储空间是不同的,为了便于把数据分成所需内存

  • 一篇文章带你搞懂JavaScript的变量与数据类型

    目录 前言: 温馨提示: 变量 1.声明 2.赋值 3.二个语法小细节 变量的命名规范 为什么需要数据类型? 简单数据类型(基本数据类型) 数字型 字符串型 String 什么是数据类型的转换 1.转换为字符串 2.转换为数字型(重点) 转化为布尔型 总结 前言: 我不是搞前端,而是搞后端的.本命编程语言是java.学习js的嘛,因为看到室友能做出动态网页,而我只能做出静态网页,再加上下个学期要学所以提前来学习学习. 温馨提示: java和javsScript没有半毛钱关系,只是javaScri

  • JavaScript第七种数据类型Symbol的用法详解

    目录 一.什么是Symbol 二.作为属性名的Symbol 三.Symbol中的方法 1.Symbol.for() 2.Symbol.keyFor() 一.什么是Symbol Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第七种数据类型,与undefined.null.Number(数值).String(字符串).Boolean(布尔值).Object(对象)并列. Symbol特点: Symbol的值是唯一的,用来解决命名冲突问题 Sy

  • Javascript中八种遍历方法的执行速度深度对比

    前言 遍历数组或对象是一名程序员的基本素养之一. 然而遍历却不是一件简单的事, 优秀的程序员知道怎么去选择合适的遍历方法, 优化遍历效率. 本篇将带你走进JavaScript遍历的世界, 享受分析JS循环的快感. 本篇所有代码都可以直接运行, 希望您通读本篇后, 不止是浏览, 最好是亲手去实践下. 概述 js有如下两种数据需要经常遍历 数组(Array) 对象(Object) 同时又提供了如下8种方法方便我们遍历元素 for while(或do~while) forEach for in $.e

  • JS入门必备之八种数据类型

    目录 一.开门见山 二.动态数据类型 (1)字符串string (2)数值number (3)布尔boolean (4)null和undefined (5)symbol (6)对象object 三.基本数据类型与引用数据类型区别 3.1 声明变量时不同的内存分配 3.2 正是因为内存分配不同,在复制变量时结果也不一样 3.3 参数传递不同 总结 一.开门见山 在ES5的时候,我们认知的数据类型确实是 6种:Number.String.Boolean.undefined.object.Null E

  • Java八种基本变量作为类的成员变量的默认值操作

    目录 Java类成员变量的默认值 下面我们看看我们的八种数据类型的默认值是什么样的 总结 boolean型变量的默认值问题 1.首先分析Java中的三种不同变量的区别 2.然后判断boolean型变量的类型 Java类成员变量的默认值 基本数据类型作为类的成员变量时可以不赋予初值,在方法中输出也不会报错. 下面我们看看我们的八种数据类型的默认值是什么样的 上代码 package objectandclass; import java.awt.SecondaryLoop; public class

  • Java中八种基本数据类型的默认值

    通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; float f; byte e; long h; short j; public static void main(String args[]){ Ceshi a=new Ceshi(); System.out.println("整型的默认值是:"+a.a); System.out.print

  • JavaScript中使用Spread运算符的八种方法总结

    Spread运算符 允许从 iterable 表达式(如另一个数组文本)初始化部分数组文本,或允许表达式扩展到多个参数(在函数调用中). 语法 var array = [[arg0ToN ,] ...iterable [, arg0ToN]] func([args ,] ...iterable [, args | ...iterable]) 参数 iterable 必需. 迭代对象. arg0ToN 可选. 数组文本的一个或多个元素. args 可选. 函数的一个或多个参数. 本文将带大家了解如

  • Java中的八种基本数据类型详解

    目录 一.八种基本数据类型常识 基本常识表 详解二.直接量与类型转换 2.1.直接量 2.2.类型转换 1.自动转换:低类型的向高类型的转换 2.强制转换:高类型的向底类型转换,但可能会数据溢出或者精度丢失 三.对应包装类及使用 3.1.基本介绍 3.2.常用方法一:静态方法 valueOf() 3.3.常用方法二:静态方法parseXXX(String str) 3.4.常用方法二:非静态方法XXXValue() 3.5.自动拆箱与装箱 3.6.关于valueOf()方法源码研究 四.相关面试

  • 关于JavaScript的变量的数据类型的判断方法

    虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number.String.Boolean.Object.Udefined.Null.其中,Object属于复杂数据类型,Object   由无序的键值对组成.其余几种都属于简单数据类型.注意:变量类型首字母大写,而变量值首字母是小写的.   JavaScript不支持自定义类型,所以JavaScript中的所有值都属于这六种类型之一.   要搞清楚一个变量是何种数据类型,就要使用typeof操作符了,注意,尤其要注意

  • js表格排序实例分析(支持int,float,date,string四种数据类型)

    本文实例讲述了js表格排序的方法.分享给大家供大家参考.具体如下: <html> <head> <title>SortTable2</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> var k=0; /**//*

随机推荐