js的数据类型

时间:2024-11-21 12:53:52

js的数据类型

什么是数据类型?

从生活中出发: 在日常生活中,描述不同的东西,有不同的一些单位。 实际上,编程也是要解决我们生活中的问题,在程序中,如何描述这些内容呢。针对不同的内容,根据其特性,需要用不同的单位(类型)加以描述,这就是数据类型的概念。
比如,描述人的时候:
姓名:小强
年龄:20
性别:女

为什么要对数据进行分类?

就如垃圾分类一样,当对数据进行分类以后,可以方便管理以及方便操作。

在js中,到底有哪些数据类型?

在js中我们把数据类型分成了两大类:
1.基本数据类型:
1.1:数值(数字):number
1.2:字符串:string
1.3:命名未赋值:undefined
1.4:布尔类型:Boolean
1.5:空类型:null


2.复杂数据类型(引用数据类型):
2.1:复杂数据类型:object
在这里插入图片描述

typeof 操作符

语法: typeof(需要检测的信息);


由于js中的’变量’是’松散类型’的,所以它提供了一种检测当前变量的数据类型的方法,也就是’typeof’关键字


例子:

var a = 10;
console.log(typeof(a))//number

基本数据类型

类型

/作用:用来表示数字的 ,任何数字都可以使用数值类型。比如商品价格、年份、年龄等。


演示:
'商品价格:9.9元 ’
年份:1952年
'年龄:99岁


第一部分:
'Number类型包含整数和浮点数(浮点数,数值必须包含一个小数点,且小数点后面至少有一位数字,需要大于0)两种值。
整数:var a = 10;
浮点数:var b = 13.14;


第二部分:
number还有一种特殊的样式:
‘特殊的NaN’
NaN:非数字类型。

特点:
① 涉及到的 任何关于NaN的操作,都会返回NaN
② NaN不等于自身。
注意 NaN不是一个数值,但他是number类型;

说明:

var n = NaN;
 var n1 = NaN; 
 var a = 1; 
 var b = 2;
1NaN表示一个本来要返回数字,但是由于某种原因,没有返回成功,就用NaN表示。
 console.log(typeof(n));//NaN
2NaN与任何值都不等,包括其本身; 
console.log(n == n1)//NaN 
3) NaN与其他任意值进行运算,都为NaN;
console.log(n+a);//NaN

第三部分:
检测参数是否是非数值的:
isNaN 'isNaN() ‘函数用于检查其参数是否是’非数字值’。
1.如果是数值返回:‘false’;
2.如果是非数值返回:

'true'; var b = '霍格沃兹';
 console.log(n+a); 
 console.log(isNaN(b));//true 
 var a = 1; 
 console.log(isNaN(a));//false

= 和 == 区别

1.'=':赋值
2.'==':进行对比判断

var a = 1;
var b = 1;
console.log(a == b);//true

字符串类型

组成:'由一系列的字符构成的数据。 作用:'描述某个名称的,用户名、密码、籍贯等。


'注意:在使用字符串类型数据的使用,需要使用引号:双引号:“”和单引号:‘’,不可以一单一双,如果不加引号会报错。


字符串有length属性:‘他是有长度的’。


有时候,需要输出特定的一些符号,js为我们提供了转义字符的用法。 如下:


注意:在页面输出的时候是不起作用的,在弹出框输出和控制台输出的时候才起作用。

代码 输出
单引号
\“ 双引号
\ 反斜杠
\n 换行
\r 回车
\t tab(制表符)
\b 退格符
\f 换页符

类型

该类型只有两个值,true和false. ‘注意:一般会在判断(条件、循环)等语句中来使用。’ 基本使用如下:
我们有可以使用typeof
运算符来获取布尔值的类型。

> var a = true; 
> console.log(a); // 检测类型 (typeof(a));//boolean
> 
> var b = false; 
> console.log(b); 
> console.log(typeof(b));//boolean

在这里插入图片描述
类型 和 null类型

第一部分:Undefined类型

> 1、如果一个变量,通过var声明了,但是没有赋值,则会出现如下提示:
> //undefined:是未定义类型;
> 表示一个变量在声明的时候没有初始值,那么它的值就是undefined> 
> var name;
> console.log(name);//
> 输出name的值; undefined 
> 
> 2.检测没有赋值的变量的类型
 // 的数据类型是 ‘undefined’; 
 console.log(typeof name);
> 
> 3、如果一个变量,没有通过var声明,直接就访问,会出现如下错误:

在这里插入图片描述

4、检测没有声明变量的类型;
//4.检测没有声明变量的类型
console.log(typeof a);//undefined

在这里插入图片描述

第二部分:Null类型
null类型被看做空对象指针,null类型也是空的对象引用。
作用:
'当将来需要存储一个对象的时候,可以给其初始值赋为null;'

总结:

'1.说明变量,只要声明,就是存在的。'
var a = '张三'; //字符串:string
var b = 123;  //数值 number
var c = true; // 布尔 boolean
var d ;   //undefined

'2.就看是否赋值了,如果没有赋值,那么它的值是undefined,并且它的数据类型也是undefined。'

'3.换句话说,undefined是js中的一种数据类型,它只有一个值,就是undefined。'

Undefined和null的区别:
1.undefined:声明了,但是没有使用。
2.null:他声明的是一个空类型。

类型

js中对象是一组属性与方法的集合。

首先:
1.这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。
2.引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。

var a = {
			name:'张三',
			age:18,
			sex:'男'}

复杂数据类型(引用数据类型):object;

1.基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。


:对象,指是带有属性和方法的特殊数据类型,对象有花括号分隔,在括号内部,对象的属性以名称和键值对的形式 (name : value) 来定义。


创建复杂数据类型的方式:1.对象字面量方式定义 2.构造函数的方式定义

>  1)对象字面量方式定义:
var a = {name:"南星", age:18, sex:'男'}
console.log(a);
console.log(a.age);
console.log(a.name);
console.log(typeof(a.name));//string
console.log(a.sex);
// 检测数据类型
console.log(typeof(a));


2)构造函数的方式定义:
var b = new Object();
b.name = '兔子';
b.m = '吃草';
b.age = 14;
console.log(b);//{name:"兔子",m:"吃草",age:14}
console.log(b.name)//兔子
// 检测类型
console.log(typeof(b));
   
 对象属性的两种寻址方式:
          var b = aa.sex;
          var c = aa["age"];  //中括号方式访问的必须是字符串 

数据类型转换

为什莫会有数据转换

在做前端页面的时候,有时候会涉及到页面中数据的处理(加减乘除)


JavaScript 是弱类型语言,而且JavaScript声明变量的时候并没有预先确定的类型,变量的类型就是其值的类型,也就是说变量当前的类型由其值所决定,夸张点说上一秒种的String,下一秒可能就是个Number类型了,这个过程可能就进行了某些操作发生了强制类型转换。虽然弱类型的这种不需要预先确定类型的特性给我们带来了便利,同时也会给我们带来困扰。

1、 转布尔类型

Boolean():
可以将任意类型的数据转为布尔类型
语法:Boolean(值) 规则:

 等于flase的:
 //null undefined  ''  0 NaN
//   
console.log(Boolean(null)); //false

// // 2. 0 
console.log(Boolean(0)); //false

// // 3.''
console.log(Boolean('')); //false

// // 
console.log(Boolean(undefined)); //false

// // 
console.log(Boolean(NaN)); //false

等于ture的://数字  非空字符串  一个空对象  一个空数组
 // 1.  123
var a = 123
console.log(Boolean(a));//ture

// // 2.非空字符串
var b = '天很蓝,找一个风很大的地方把我忘了';
console.log(Boolean(b));//ture

// // 3.空的一个对象
var c = {};
console.log(Boolean(c));//ture

// // 4.空数组
var d = [];
console.log(Boolean(d));//ture

2、转字符型

1.String():可以将任意类型的数据转为字符型
语法:String()
返回值:转换的内容加引号

var a = 123;
console.log(typeof(a));//number
console.log(a);
console.log(typeof(String(a)));//string

// 2. NaN
var b = NaN;
console.log(typeof(b));//number
console.log(typeof(String(b))); //string

// 
var c = null;
console.log(typeof(c)); //objcet
console.log(typeof(String(c))); //string

// 4.未定义类型的
var d = undefined;
console.log(typeof(d)); //undefined
console.log(typeof(String(d))); //string

// 5.布尔值
var e = true;
console.log(typeof(e)); //Boolean
console.log(typeof(String(e))); //string

2、toString():除了nullundefined之外的数据都可用toString转换
语法:值.toString()
1).var num = 123 ;
num.toString() //'123';

2).var str = true;
str.toString();// 'ture';

注意:nullundefined用toString转会报错

var res = null;
res.toString() //Cannot read property , toString’of null

var res2 = undefined;
res2.toString() //TypeError: Cannot read property " toString’of undefined


3、隐式转换
语法:值 + "";

1.123 + ''; //'123'
2.null + '';//'null'
3.'' + undefined; //'undefined'

3、转数值型

Number();可以将任意类型数据转为数值型;

规则:
3-1: null 转 number:  
结果为 0 ; Number(null)// 0

3-2: Undefined转number:
结果为NaN;
console.log(Number(undefined)) //NaN
var a;
console.log(Number(a))//NaN

3-3、布尔 转 number 结果:
true = number //1
console.log(Number(ture)) //1

false = number // 0
console.log(Number(false)) //0

3-4、空字符串 转 number 结果  //0
console.log(Number(' ')) //0

3-5、非空字符串 转 number 规则
如果字符串里 的内容全部是有效数字,那么就转成对应的有效数字,否则,转number后就是NaN.
 		var arr = '123';
        console.log(Number(arr)); //123

        var arr1 = '12.34'
        console.log(Number(arr1)); //12.34

        var arr2 = '12.31.54';
        console.log(Number(arr2)); //NaN

        var arr3 = '123nx';
        console.log(Number(arr3)); //NaN

        var arr4 = '你好';
        console.log(Number(arr4)); //NaN

		'注意:数字前面有零的就省率0'
        var arr5 = '012138';
        console.log(Number(arr5)); //12138  注意;如果前面有0的化就会默认隐藏掉 

parseInt()取整

// 给浮点小数进行取整
        // 方法:parseInt(值);
        // 注意:
        // 1)从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN,
        // 2)如果第一个不是非数字,就向后转换,直到遇到一个小数点,或非数字,则停止转换,将前面转面转的内容输出
        // 注意:如果使用parseInt进行转换,他会把字符型转成数字型的,并且取整
        var a = '123';
        console.log(parseInt(a)); //123

        var b = '13.14';
        console.log(parseInt(b));//12

        var c = '12.31.14';
        console.log(parseInt(c)); //12

        var d = '你好';
        console.log(parseInt(d)); //NaN

        var e = 'w123';
        console.log(parseInt(e)); //NaN

        var r = '123w';
        console.log(parseInt(r)); //123

parseFloat()取浮点数

语法:parseFloat();
1)从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN2)如果第一个是数字,就向后转换,直到遇到一个小数点,或非数字,则停止转换,将前面转面转的内容输出
		var a = '123';
        console.log(parseFloat(a)); //123

        var b = '12.12';
        console.log(parseFloat(b)); //12.12

        var c = '12.31.14';
        console.log(parseFloat(c));//12.31

        var d = '你好';
        console.log(parseFloat(d)); //NaN

        var e = 'w12.31'
        console.log(parseFloat(e));// NaN

        var r = '12.31w';
        console.log(parseFloat(r));//12.31

isNaN() 检测是否是非数字

语法:isNaN(检测值)
返回值:非数字===>true   数字===false;    
说明:isNaN();会发生一个隐式转换,会尝试着将检测值转为number;然后进行判断
console.1og (isNaN(123)) ://false;
console.1og (isNaN("123a")) ://true:
console. log (isNaN(true)) ://false

小结:

\1. 转布尔的方法:Boolean() ;转为false的有: 0 NaN ‘’ null undefined;

\2. 转字符串的方法有 String() toString() ;注意null和undefined不能用toString转

\3. 转数值:Number() ,parseInt(),parseFloat() 注意转换规则

\4. isNaN():检测是否是非数字 如果是数字返回 false ;如果是非数字,返回true;