JavaScript 数据类型

发布于 2024-09-25 15:09:08 字数 4177 浏览 16 评论 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技术交流群

发布评论

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

关于作者

暖阳

暂无简介

文章
评论
25 人气
更多

推荐作者

梦里南柯

文章 0 评论 0

不将就、

文章 0 评论 0

alipaysp_ZRaVhH1Dn

文章 0 评论 0

故事未完

文章 0 评论 0

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