专栏名称: 前端JavaScript
分享 | 学习 | 交流 | 原创 分享是学习的开始;学习不必要从头开始,是从现在开始;交流能沟通你我,提高你的学识;期待你的加入!!! web前端技术交流,JavaScript,HTML5,CSS3……
目录
相关文章推荐
51好读  ›  专栏  ›  前端JavaScript

[S3-E370]JavaScript数据类型介绍,高手误入

前端JavaScript  · 公众号  · Javascript  · 2017-06-23 06:41

正文

请到「今天看啥」查看全文


JavaScript有六种数据类型:Undefined、Null、Boolean(布尔)、Number(数字)、String(字符串)、Object(对象),其中前5种是简单数据类型,后一种是引用数据类型。虽然都是小知识点很基础,但都要好好掌握:例如浮点数占用的 内存是整型数的两倍,String对象是不可变类型。


1 前言

JavaScript有六种数据类型:Undefined、Null、Boolean(布尔)、Number(数字)、String(字符串)、Object(对象)。


2 数据类型判定

在JavaScript中使用typeof操作符来确定数据类型。


//输出 undefined

console.log(typeof undefined);

//输出 object

console.log(typeof null);

//输出 boolean

console.log(typeof true);

//输出 number

console.log(typeof 42);

//输出 string

console.log(typeof "42du");

//输出 object

console.log(typeof new Object());

//输出 function

console.log(typeof function(){});

上述代码中的typeof "42du"也可以写成typeof("42du")这种形式。需要注意的是typeof null返回object,null被看成是一种空的对象引用。


3 undefined类型

当对象用var定义,未被初始化,则对象值为undefined。


var u_name;

//输出 undefined

console.log(u_name);

//抛出引用错误,u_age未定义

console.log(u_age);


4 null类型

null表示空的对象指针,调用typeof返回object。


var u_name = null;

//输出 object

console.log(u_name);

//输出 true

console.log(null == undefined);


5 布尔(Boolean)类型

布尔类型只有两个值true和false,因为javascript是大小写敏感的,所以True或其它都不是布尔值。


所有其它类型都可以利用'Boolean()'转化成布尔型。


//空自符串输出 false

console.log(Boolean(""));

//非空自符串输出 true

console.log(Boolean("42du"));

//0和NaN输出 false

console.log(Boolean(0));

//任何非0数字(包括infinity)输出 true

console.log(Boolean(42));

//null输出 false

console.log(Boolean(null));

//任何对象输出 true

console.log(Boolean(new Object()));

//undefined输出 false

console.log(Boolean(undefined));

var u_name = "42du";

//自动转化成Boolean类型

if(u_name) {

console.log("自动布尔转换");

}


6 数字(Number)类型

数字类型即用来表示整型数,也用来表示浮点数。数字的表示可以用8进制(以0开头)或16进制(以0x开头)表示,但在计算中都是按照10进制数进行。


//8进制,输出 34

console.log(042);

//不正确的8进制按10进制处理,输出 69

console.log(069);

//16进制可以是大写的A至F,输出 42

console.log(0x2A);

//16进制可以是小写的a至f,输出 42

console.log(0x2a);

//E表示法,10的3次方,输出 4200

console.log(4.2e3);

//E表示法,10的-3次方,输出 0.0042

console.log(4.2e-3);

//最大数,输出 1.7976931348623157e+308

console.log(Number.MAX_VALUE);

//最小数,输出 5e-324

console.log(Number.MIN_VALUE);

//有穷数判定,输出 true

console.log(isFinite(42));

//有穷数判定,输出 false

console.log(isFinite(Number.MAX_VALUE+Number.MAX_VALUE));

//浮点数值精确17位小数,不足够精确

var a = 0.4,b=0.2;

//得不到输出,永远不要做浮点数值判定

if(a + b == 0.6) {

console.log("02 + 0.4 = 0.6");

}

//输出 0.6000000000000001

console.log(a+b);

6.1 NaN


NaN(Not a Number)是一个特殊的数字表示。任何包括NaN的操作都返回一个NaN,NaN不等于任何值,包括NaN自己。


//输出 NaN

console.log(NaN / 10);

//输出 false

console.log(NaN == NaN);

//输出 true

console.log(isNaN(NaN));

//输出 false

console.log(isNaN(42));

//可以转化为数字42,输出 false

console.log(isNaN("42"));

//输出 true

console.log(isNaN("42du"));

//true可以转化为数字1,输出 false

console.log(isNaN(true));


6.2 数值转换


共有三种数值转换的函数,分别是Number(),parseInt(),parseFloat()。Number()可用来转换任何数据类型,parseInt(),parseFloat()用来转换字符串类型。


6.2.1 Number转换


//输出 1

console.log(Number(true));

//输出 0

console.log(Number(false));

//输出 0

console.log(Number(null));

//输出 NaN

console.log(Number(undefined));

//输出 0

console.log(Number(""));

//输出 NaN

console.log(Number("Hello 42du"));

//输出 42

console.log(Number("042"));

//输出 42

console.log(Number("0x2a"));

6.2.2 parseInt转换


//输出 NaN

console.log(parseInt(""));

//输出 42

console.log(parseInt("42du"));

//输出 42

console.log(parseInt("42.5"));

//输出 42

console.log(parseInt("042"));

//输出 42

console.log(parseInt("0x2a"));

//输出 42

console.log(parseInt("2a",16));

6.2.3 parseFloat转换


//输出 42

console.log(parseFloat("42du"));

//输出 42.5

console.log(parseFloat("42.5.5"));

//输出 42.5

console.log(parseFloat("042.5"));

//输出 0

console.log(parseFloat("0x2a"));

//输出 42000000

console.log(parseFloat("4.2e7"));


7 字符串(String)类型

字符串类型用来表示一系列16位Unicode字符序列。可以用单引号或双引号来定义,二者等价。String对象是不可变对象。


var name = "42du";

//输出 4

console.log(name.length);

7.1 字面值


字面值 意义

\n 换行符

\t 制表符

\b 退格

\r 回车

\f 分页符

\ 反斜杠

\' 单引号

\" 双引号

\xnn 十六进制代码nn表示的字符

\unnnn 十六进制代码nnnn表示的Unicode字符


7.2 转换成字符串


var num = 42;

//输出 42

console.log(num.toString());

//输出 101010

console.log(num.toString(2));

//输出 52

console.log(num.toString(8));

//输出 2a

console.log(num.toString(16));

//输出字符串 null

console.log(String(null));

//输出字符串 true

console.log(String(true));

//输出字符串 undefined

console.log(String(undefined));

8 对象(Object)类型

直接创建


var student = new Object();

student.name = "iFat3";

student.age = 36;

//输出 true

console.log(student.hasOwnProperty("name"));

//输出 true

console.log(student.propertyIsEnumerable("name"));

//输出 Object { name: "iFat3", age: 36 }

console.log(student.valueOf());

//输出 [object Object]

console.log(student.toString());

或者写成


var student={name:"iFat3",age:36};


对象构造


function student(name,age) {

this.name = name;

this.age = age;

this.changeName=changeName;

function changeName(name) {

this.name = name;

}

}

var stu2 = new student('iFat3',36);

//输出 Object { name: "iFat3", age: 36, changeName: changeName() }

console.log(stu2.valueOf());

stu2.changeName('iFat4');

//输出 Object { name: "iFat4", age: 36, changeName: changeName() }

console.log(stu2.valueOf());


转自: http://www.42du.cn/p/27

作者: 毛三胖


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如果文章不错,请转发的朋友圈!

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


========== 阅读原文 ==========








请到「今天看啥」查看全文