资讯专栏INFORMATION COLUMN

JavaScript中的数据类型

szysky / 2965人阅读

摘要:八进制字面值的第一位必须是,然后是八进制数字序列。十六进制字面量的前两位必须是,后跟任何十六进制数字以及。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。

前言
ECMAScript 迄今为止标准定义了 7 种数据类型:6 种原始类型-- StringNumberBooleanUndefinedNullSymbol1 种引用类型-- Object

看到这里,你是否已经对它们了如指掌呢。如果你还对它们之间的定义、转换、检测等方面并不是那么清楚,或者已经有些模糊。那么,下面就让我们一起去重新探索、温习一遍吧

如果文章中有出现纰漏、错误之处,还请看到的小伙伴多多指教,先行谢过

以下↓

原始值
Object 以外的所有类型都是不可变的(值本身无法被改变),我们称这些类型的值为 原始值
String类型
JavaScript 的字符串类型用于表示文本数据.JavaScript 字符串是不可更改的。这意味着字符串一旦被创建,就不能被修改。但是,可以基于对原始字符串的操作来创建新的字符串
var a = "hello"

类型转换:

toString()

var num = 2;
num.toString() // "2"
var found = true;
found.toString() // "true"
除去 nullundefined 之外,其余数据类型都存在 toString 方法,使用会报错

String()

var sym = Symbol(1);
String(sym) // "Symbol"
var num = 10;
String(num)  // "10"
var str;
String(str) // "undefined"
如果值有 toString 方法,则调用该方法并返回响应的结果

如果是 null 返回 "null"

如果是 undefined 返回 "undefined"

隐式转换

var a = 3;
a + ""  // "3"
var obj = {a: 3};

obj + "" // [object object]
转换规则和 String 方法一致
Number类型
根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(263 -1)263 -1

特殊的数值类型:

无穷大:+Infinity()-Infinity()NaN (非数值,Not-a-Number)

NaN,非数值。是一个特殊的 Number 类型,用来表示一个本来要返回数值的操作未返回数值的情况

任何涉及 NaN 的操作都返回 NaN

NaN 与任何值都不相等,包括 NaN 本身

40 / NaN  // NaN
NaN === NaN // false
最基本的数值字面量格式是十进制整数,还可以通过八进制或十六进制来表示。八进制字面值的第一位必须是 0,然后是八进制数字序列(0 ~ 7)。十六进制字面量的前两位必须是 0x,后跟任何十六进制数字(0 ~ 9 以及 a ~ f)。其中字母可以是大写也可以是小写
var num1 = 070; // 八进制的56
var num1 = 079; // 无效的八进制,会解析为十进制的79
var num2 = 56; // 十进制的56
var num3 = 0x38; // 十六进制的56
类型转化方式:Number()parseInt()parseFloat() 以及操作符隐式转换
Boolean类型
表示一个逻辑实体,可以有两个值:truefalse
var suc = true;
var los = false;

类型转化方式:Boolean()以及操作符隐式转换

Undefined类型
Undefined 类型只有一个值,即特殊的 undefined 。一个  声明但没有被赋值的变量会有个默认值 undefined
var a;  // undefined
Null类型
Null 类型也只有一个值,即特殊的 null 表示一个空对象指针
var foo = null;
Symbol类型
符号 (Symbols)ECMAScript6 版新定义的。符号类型是唯一的并且是不可修改的
var s = Symbol()
Symbol 函数前不能使用 new 命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象

Symbol 函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述

引用类型
ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起

最常见的引用类型:对象(Object)、数组(Array)、函数(Function)、正则(RegExp)和日期(Date)

引用类型与基本类型之间最大的不同

基本数据类型的值是按值访问的,基本类型的值是不可变的

var a = 1;
var b = 1;

a === b  // true

b = a 
b = 2;

a // 1

引用类型的值是按引用访问的,引用类型的值是可变的

var a = {};
var b = {};

a === b  // false

var a = {};
var b = a
b.name = "hello"

a.name // hello
基本包装类型
为了便于操作基本类型值, ECMAScript 还提供了 3 个特殊的引用类型:BooleanNumberString
var a = new String("hello")
typeof a // object 
引用类型与基本包装类型的主要区别就是对象的生存期。使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存当中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。这意味着我们不能在运行时给基本类型值添加属性和方法
var s1 = "some text";
s1.color = "red";
s1.color // undefined

// 但是这样是可以的

var s1 = new String("some text");
s1.color = "red";
s1.color // red 
不建议显式的创建基本包装类型的对象,因为在很多时候会造成一些让人很迷惑的东西
var b = new Boolean(false)
var c = b && true
c // true

这样的情况下,b 这个变量就是 Boolean 对象,所以无论在什么情况下,它都是 true

记得之前看到过这样一个问题:

var str = "hello"

typeof str // String

str instanceof String // false

这里的结果为 false 的原因就是 str 本质上是一个原始值,并不存在 prototype 属性

当然,这里也涉及到了数据类型的判断,有兴趣的小伙伴可以 点击这里 查看如何判断 JavaScript 中的数据类型

后记

不断总结温习前端方面的知识点以及有趣的东西,感兴趣的小伙伴可以 点击这里,查看完整版前端总结知识点,欢迎 star 关注

期待同行

以上

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103220.html

相关文章

  • JavaScript学习总结(一)基础部分

    摘要:前缀规范每个局部变量都需要有一个类型前缀,按照类型可以分为表示字符串。例如,表示以上未涉及到的其他对象,例如,表示全局变量,例如,是一种区分大小写的语言。布尔值与字符串相加将布尔值强制转换为字符串。 基本概念 javascript是一门解释型的语言,浏览器充当解释器。js执行时,在同一个作用域内是先解释再执行。解释的时候会编译function和var这两个关键词定义的变量,编译完成后从...

    AlanKeene 评论0 收藏0
  • JS程序

    摘要:设计模式是以面向对象编程为基础的,的面向对象编程和传统的的面向对象编程有些差别,这让我一开始接触的时候感到十分痛苦,但是这只能靠自己慢慢积累慢慢思考。想继续了解设计模式必须要先搞懂面向对象编程,否则只会让你自己更痛苦。 JavaScript 中的构造函数 学习总结。知识只有分享才有存在的意义。 是时候替换你的 for 循环大法了~ 《小分享》JavaScript中数组的那些迭代方法~ ...

    melody_lql 评论0 收藏0
  • JavaScript入门

    摘要:被识别为结束符。变量时被认为时有名字的容器。常量一旦被声明初始化,值并不能被改变。字符串可以看成右字符组成的数组,可能被误认为可变的。表达式没有显示的返回任何内容。 Java script 简介 Javascript 是一门跨平台,面向对象的轻量级脚本语言,运行于Javascript解释权/引擎 avascript内置了一个包含一系列对象的标准库,比如数组,日期,数字和一个语言元素合...

    AaronYuan 评论0 收藏0
  • JavaScript中的基本数据类型

    摘要:中有种基本数据类型和。在介绍的基本数据类型前,有必要提到两个关键字和。由于中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是关键字。输出的结果为用于表示由零数字或字符组成的字符序列,即字符串。 如果你是一名IT前端人员,怎么会不懂JavaScript的美?如果你是一名前端在学人员,接触JavaScript后,怎么会不明白JavaScript中基本数据类型?大家都...

    ispring 评论0 收藏0
  • WebSocket系列之JavaScript中数字数据如何转换为二进制数据

    摘要:以和为例,说明中的数字数据如何转换为二进制数据。对象用来表示通用的固定长度的原始二进制数据缓冲区。中的数字数据如何转换为二进制数据对和有了一个大概的了解,下面让我们来看下它是如何进行二进制数据操作的。 概述 本文主要通过对JavaScript中数字数据与二进制数据之间的转换,让读者能够了解在JavaScript中如何对数字类型(包括但不限于Number类型)进行处理。 二进制数据在日常...

    MASAILA 评论0 收藏0
  • 《JSON必知必会》学习笔记(一)

    摘要:基于对象字面量,但是独立于任何编程语言,真正重要的是表示法本身,所以在学习之前不必先学习。键必须是字符串,值可以是合法的数据类型字符串数字对象数组布尔值或。布尔类型中的布尔值仅可使用小写形式或,其他任何写法都会报错。 什么是JSON JSON全称是Javascript Object Notation(对象表示法),是一种在不同平台间传递数据的文本格式(数据交换格式)。常见的数据交换格式...

    rickchen 评论0 收藏0

发表评论

0条评论

szysky

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<