javascript数据类型分为:
原始类型(基础数据类型)
引用数据类型(对象类型)
原始类型(基础数据类型):
boolean 布尔
true
false
undefined,null,0(包括+0,-0),NaN,false 使用Boolen( )为false
Undefined类型:
表示找不到,未定义
只有一个值undefined
Null类型 :
null 表示一个空的值
只有一个值null
有的人设变量时,会把null当做默认值或初始值,避免值为undefind
Number类型 数字类型:
NaN
NaN不是数据类型,是一个特殊值
特性:
NaN不等于自身
例如:
console.log( NaN===NaN);
返回false
正无穷 Infinity
最大值:Number.MAX_VALUE
负无穷 -Infinity
最小值:Number.MIN_VALUE
正常数字
123等
指数
长度为11个二进制位,意味着指数部分最大值为2047
数字的部分特性:
1.js内部,所有数字都是以64位浮点形式储存,即便整数也是如此。js底层没有整数,只有小数,所以运算不够精确。
例如:
consloe.log((3.1+3.2)>6.3);
返回值是true
2.无限接近0 则显示0
当一个值特别接近0,超过一个界限时,会直接显示0
所以,js中很少用其进行精确运算,很少做大型数据运算。
例如:
var x=0.5;
for(var i=0;i<25;i++){
x=x*x;
}
console.log(x); //0
特殊值: +0 -0
运算出现的结果会不同:
5/0 结果:Infinity 因为0不能作为被除数
5/-0 结果:-Infinity
50 结果:0
5-0 结果:-0
String类型 (字符串):
简单的说,由单引号和双引号包裹的内容,就是字符串
转义字符
能屏蔽字符本身的含义
代码一行写不下,可以用转义字符
var str="1234
2345";
正常情况下,字符串写不下不能直接用回车键换行
换行的话,n换行符要在一行中
另一种写法:
字符串拼接:
var a="123"+
"234"+
"123";
Symbol (es6新类型):
一种独一无二的字符串,永远不会产生重复现象。
主要针对对象中的key。不能使用new关键字的构造函数运行。
可以在symbol中传入一段参数,用来对这个独一无二的数据起到一个说明的作用。
作用:
避免命名重复,造成程序出错
出错例子:
let obj={
"name":"123",
"name":"wan"
}
运行时,不会报错。后面的key把前面的key给覆盖。打印结果:只会显示后一个键值对,前一个消失。
注意事项:
不能用obj.symbol方式 只能用obj[symbol]
强型转换:
let a=Symbol();
String(a);
Bollean(a);
特性例子:
let a=Symbol();
let b=Symbol();
console.log(a===b); //false
因为独一无二
引用数据类型(对象类型):
object
对象:
{ }
无序的键值对的集合
创建一个对象需要{ }来创建
写法:
{name:"a"}
创建对象的常用方法:
1.var obj={ };
2.var obj={name:"a"};
3.构造函数创建
var obj=new String( );//创建一个字符串对象
特性:
{name:“a”}与{“name”:“a”}相同,对象的键都会自动转为string类型
键[ ]中不加引号也会被认为是变量
键不能为数字开头的纯数字
对象与对象间的存储空间是不同的
例如:
console.log({} === {})
返回false
Aarry
数组:
是一种特殊的对象。
创建数组:
var arr=[ ]
var arr=[123,"qqq"]
var arr=new Array()
var arr=new Array("123","wa")
从创建速度还是运行效率来讲,直接量的形式都优于构造函数的形式
创建的区别:
构造函数创建过程:
1.创建函数
2.查询作用域链
3.创建作用域链
4.将数据写入
使用直接量创建:
步骤为3步
使用直接量创建,相当于将数据直接写入内存中,速度最快。相当于直接作用在作用域链条内。
作用域链条:
在ES5中存在两条,一条是var,也就是变量的作用域,另一条是函数声明。
特性:
在代码的执行过程中优先查找非函数链条。顺序是从上到下。而函数链条顺序从下到上。
js代码执行时,通过直接量向内存中存储数据的速度是最快的,其次是变量声明,最后是通过函数调用获得的变量。
数组可自定义下标,但自定义下标后,数组length为0。因为是自定义数组,在执行某些操作时,数组排列会出现混乱。
稀疏数组:
undefined占位(空位),这种索引不连贯的数组,叫做稀疏数组。
例如:
var arr=[1,2," ","w", ,5,9];
"w"后面为空位, 索引不连贯
Function
函数(方法):
函数(function)是一段可以反复调用的代码块,需要通过名字来进行调用。它能将一些数据(函数的参数)传递进去进行处理,然后返回一些数据(函数的返回值),也可以不返回数据。
方法(method)是通过对象调用的javascript函数。也就是说,方法也是函数,只是比较特殊的函数。
也就是函数和方法本质上是一样的,只不过方法是函数的特例,是将函数赋值给了对象。
js中所有的方法都以返回值的形式返回结果
函数创建:
function 函数名(){ }
var 函数名=function( ){ }; 匿名函数/函数表达式
var 函数名=new Function( ) ; 构造函数
var 函数名=(形参)=>{ } 箭头函数(ES6/ESMA2015)
箭头函数简写:
var 函数名=参数=>返回值
当参数只有一个时可省略()
当函数体中只有一句返回值时,可省略{ }
构造函数:
功能强大,效率低,速度慢,能创建一切类型,不建议使用创建对象以外其他类型
参数:
函数的参数不是必须的
形参:
定义函数时需要传入参数
实参:
实际调用函数时传入的参数
特性:
实际调用时参数可与设置时的参数个数不等
函数调用时,可省略最后,不用可传空字符串,但不能在中间省略
例如:
fn(num,,1)//报错
作用:
减少代码的复用性
避免造成变量污染
特性:
一等公民
与string,number等同级。能代替一切进行赋值
函数重复声明,后一个会把之前的覆盖掉
函数都有一个constructor属性,可查看每个对象的构造函数
函数没调用,函数代码体不执行
函数不执行的话,函数内部如果代码书写错误,代码运行也不会报错
函数如果没有返回值,打印( consloe.log( ) )的值为undeifined
()叫做方法也叫API,但并不是所用的方法都叫API
增加代码安全性的方法:
代码压缩
变量混淆
Date
日期类型
Math
数学类型
RegExp
正则表达式
原始类型与应用类型的区别:
原始类型的数据信息都存储于栈(stack)中,引用类型信息存于堆(heep)中。
引用类型的存储都是拆开的,数据信息存储于堆中,存储于堆中的位置信息存于变量中,变量存储与栈中。
引用类型可以修改单个值,但原始类型只能整个替换。
如果把引用类型的地址赋值给变量,修改变量,只是修改地址,并不会对值造成影响。
寻找顺序:
到栈中找到存储地址的变量,再用该地址去堆中寻找相应的数据
栈中->变量->堆中->数据
最后
以上就是快乐羽毛最近收集整理的关于javascript数据类型及部分特性的全部内容,更多相关javascript数据类型及部分特性内容请搜索靠谱客的其他文章。
发表评论 取消回复