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; 1)NaN表示一个本来要返回数字,但是由于某种原因,没有返回成功,就用NaN表示。 console.log(typeof(n));//NaN 2)NaN与任何值都不等,包括其本身; 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():除了null和undefined之外的数据都可用toString转换
语法:值.toString()
1).var num = 123 ;
num.toString() //'123';
2).var str = true;
str.toString();// 'ture';
注意:null和undefined用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)从第一个字符开始转换,如果第一个字符就是非数字,那么得到的一定是NaN,
2)如果第一个是数字,就向后转换,直到遇到一个小数点,或非数字,则停止转换,将前面转面转的内容输出
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;