JavaScript 数据类型

发布于 2024-09-25 15:09:08 字数 4177 浏览 8 评论 0

一、JavaScript 中基本的数据类型​

查看数据类型用:typeof 变量名

Javascript 的数据类型有六种(ES6 新增了第七种 Symbol)

  • JS 中的值有两种类型:原始类型( Primitive )、对象类型( Object )。
  • 原始类型包括: UndefinedNullBooleanNumberString 等五种。
  • Undefined 类型和 Null 类型的都只有一个值,即 undefinednullBoolean 类型有两个值: truefalseNumber 类型的值有很多很多;String 类型的值理论上有无数个。
  • 所有对象都有 valueOf()toString() 方法,它们继承自 Object,当然也可能被子类重写

  • 数值( number ):整数和小数(比如 1 和 3.14)
  • 字符串( string ):字符组成的文本(比如”Hello World”)
  • 布尔值( boolean ):true(真)和 false(假)两个特定值
  • undefined :表示 未定义 或不存在,即此处目前没有任何值
  • null :表示空缺,即此处应该有一个值,但目前为空
  • 对象( object ):各种值组成的集合

通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于 undefined 和 null,一般将它们看成两个特殊值


二、数据类型的转换

转换函数

  • toString() 转换为字符串,在 JavaScript 中所有数据类型都可以转换为 string 类型
var n1 = 12;
var n2 = true;
var a = [1, 2, 3];
var o = {};
function f(){}
n1.toString(); //"12"
n2.toString(); //"true"
a.toString(); //"1,2,3"
o.toString(); //"[object Object]"
f.toString(); //"function f(){}"
  • parseInt() 解析出一个 string 或者 number 类型的整数部分,如果没有可以转换的部分,则返回 NaN( not a number
var n1 = "12";
var n2 = "23hello";
var n3 = "hello";
parseInt(n1); //12
parseInt(n2); //23
parseInt(n3); //NaN
  • parseFloat() 解析出一个 string 的浮点数部分,如果没有可以转换的部分,则返回 NaN (not a number)
var n1 = "1.2.3";
var n2 = "1.2hello"
var n3 = "hello"
parseFloat(n1); //1.2
parseFloat(n2); //1.2
parseFloat(n3); //NaN

强制类型转换

Boolean(value) - 把给定的值转换成 Boolean

Boolean(123); //true
Boolean(""); //false
Boolean([]); //true
Boolean({}); //true
Boolean(null); //false
Boolean(undefined); //false

Number(value) -把给定的值转换成数字(可以是整数或浮点数)

Number("123"); //123
Number("123h"); //NaN
Number(true); //1
Number(false); //0
Number(undefined); //NaN
Number(null); //0
Number([]); //0
Number({}); //NaN

String(value) - 把给定的值转换成字符串

String(123); //"123"
String([1,2]); //"1,2"
String(undefined) //"undefined"
String(null) //"null"
String({}) //"[object Object]"

隐式转换

  • 数字+字符串:数字转换为字符串 console.log(12+"12") ; //1212
  • 数字+布尔值:true 转换为 1,false 转换为 0 console.log(12+true) ; //13
  • 字符串+布尔值:布尔值转换为 true 或 false console.log("hello"+true) ; //hellotrue
  • 布尔值+布尔值 console.log(true+true) ; //2

null 和 undefined

  • undefined 表示一种未知状态,声明了但没有初始化的变量,变量的值时一个未知状态。访问不存在的属性或对象 window.xxx)方法没有明确返回值时,返回值是一个 undefined.当对未声明的变量应用 typeof 运算符时,显示为 undefined。
  • null 表示尚未存在的对象,null 是一个有特殊意义的值。可以为变量赋值为 null,此时变量的值为“已知状态”(不是 undefined),即 null。(用来初始化变量,清除变量内容,释放内存)
`undefined==null`   // 结果为 true,但含义不同。
`undefined===null` //false, 两者类型不一致,前者为 undefined,后者为 object

总结一下 == 运算的规则:(隐式转换)


  • undefined == null ,结果是 true 。且它俩与所有其他值比较的结果都是 false
  • String == Boolean ,需要两个操作数同时转为 Number
  • String/Boolean == Number ,需要 String/Boolean 转为 Number
  • Object == Primitive ,需要 Object 转为 Primitive (具体通过 valueOftoString 方法)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

暖阳

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文